記得剛開始學程式設計的時候還是從c語言開始的,還是看的譚浩強寫的那本書,上面對介紹i++和++i的區別如下:
i++是先賦值,然後再自增;++i是先自增,後賦值。
用**表示就是:
若 a = i++; 則等價於 a=i;i=i+1;
而 a = ++i; 則等價於 i=i+1;a=i;
那麼事實真是這樣麼,只是曾經我深信不疑,但是直到我看到下面這段**:
@test
public void test()
如果按原先定義,就應該是i=i;i=i+1; 那麼結果就應該是1;但是很遺憾結果是0;所以得知原先定義有誤,至少是不準確的。
那麼真實的機制是怎麼樣的呢?我簡單用**模擬如下真實流程:
int i;
@test
public void testaddi()
//模擬i++的機制
public int lastadd()
//模擬++i的機制
public int firstadd()
輸出結果為0和1,和i=i++以及i=++i的結果一致。
i和i 的區別
大家都應該知道i 和 i的區別,前者是先使用i的值,然後再增加1,而後者是先增加1然後再使用i的值。但是i 和 i那個更好呢?我們實現角度來看 前者是將i值加1後賦給i,然後返回i本身 而後者是先用個臨時變數儲存i值,然後將i值加1賦給i,然後返回臨時變數的值。內建資料型別他們的效率差不多,看他們的...
i 和 i的區別
當年上c 課的時候對於i 和 i的區別就稀里糊塗。後來沒注意也沒出過什麼問題。但是這個問題還是應該搞清楚。假如有乙個vector,值為 1,2,3,4,5,6,7 用以下程式輸出 i 0 while i 7 i 0 while i 7 cout beforei v i endl cout befor...
i 和 i的區別
很多朋友在學習基礎的時候很容易遇到過這個問題,i和i 到底有什麼區別?下面來詳細解釋一下。首先i 和 i單獨為一條語句時沒有任何區別 例如 int i 1 i 單獨為一條語句 system.out.println i i i 2 int i 1 i 單獨為一條語句 system.out.printl...