對i++和++i的理解

i++  先使用後增加

++i  先增加後使用

實際上這我們需要對這兩句話做點補充 先使用等到語句結束時候再增加 對++i同樣是這樣 我們最熟悉的結束標誌莫過於“;”了

不過還有其他兩種 “,’”  與 函數的括號

舉幾個簡單的例子;

簡單的定義一個變量 

i  =  2;

num = (i++)+(i++)+(i++)+(i++); 這時候 num = i + i+ i +i =8; 語句結束 i = i+1+1+1+1=6

num = (++i)+(++i)+(++i)+(++i); 這時候 num = 19  首先計算 (++i) +(++i) 先做兩次自增運算 即 i+1+1=4 第三個++i 時候i =5 第四個爲6 遇到;開始使用i值

= 4+4+5+6=19;

i = i * ((i ++)+(++i)) ; i = 19    ;先計算括號內的++i 這時候 i = 3  開始運算 3*(3+3) 結束時 再執行i++的自增 即3*(3+3)+1 =19

i=(i++)+(++i)+(i++)+(++i); i =15  (3+3+3+4+2)=15

i =(++i ) + (i++) +  (++i) +(i++); i=(3+3+4+4+2)=16

那麼在遇到函數調用時候也是這樣嗎

假設函數fun(++i,i++) 令a = ++i;b= i ++  我們需要知道函數調用時 傳參從右邊開始 所以先看 i++  這時候b=2,繼續往右看,遇到“,”所以還是自增 這時候 i=3

開始執行++i ,先自增 i=4,再往右爲函數括號 開始使用 所以 a = 4

如果說把i++看做是常數 ++i爲變量i的話 能幫助我們更好的理解


比如 func(++i,i++,++i,i++.++i)第一步 爲3 第二步 3.第三步 5 第四步 5 第五步7 這時候把++i看做變量 那麼 func(i,5,i,3,i)實際上呢就是(7,5,7,3,7)

有興趣的話 可以自己寫一個函數 用gcc編譯 看下結果是否正確。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章