C# 的 i++ 和 ++i

摘要:C# 的 i++ 和 ++i

前幾天看了 Phoenix's 技術學習記事 i = i++ 文章
想到之前唸書時學C時也會考這種 i++ ,++i 等的組合.
寫個小程式來回憶一下
(手邊只會寫C#,其它語言就沒有測了)

執行結果


 

(這是我個人想法,有誤再請多多指教)
程式執行的原則是:
1. i++ 會影嚮 =  左的結果(或者說 會影嚮一行程式執行的結果)
2. ++i 不會影嚮 =  左的結果(或者說 不會影嚮一行程式執行的結果)
3. 把 =  左、右邊的變數來分開看

i 的初始值都是1

以 j = i++ - ++i 來看
step1:  i = i + 1       (i = 2)      j = i++ - ++i  執行底線部分
step2:  i = i + 1       (i = 3)      j = i++ - ++i 執行底線部分
step3:  j = 1 - 3       (j = -2)    1:i++,算未執行  3:++i,算執行的

以 j = ++i - i++ 來看
step1:  i = i + 1       (i = 2)      j = ++i - i++  執行底線部分
step2:  i = i + 1       (i = 3)      j = ++i - i++ 執行底線部分
step3:  j = 2 - 2       (j = 0)     1:i++,算未執行  3:++i,算執行的

以 i = i++ - ++i 來看   (可以把 = 左邊 i 變數 視為 ni 變數)
step1:  i = i + 1      (i = 2)        j = i++ - ++i  執行底線部分
step2:  i = i + 1      (i = 3)        j = i++ - ++i 執行底線部分
step3:  ni = 1 - 3    (ni = -2  )  就是 i = -2  ,其實是和上方那個例子的j是一樣的


原始碼下載 

題外話:
不過個人是不推薦使用這種方式來寫程式
會降低程式的可讀性,不易維護
不過拿來玩玩,還挺不錯