摘要: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是一樣的
題外話:
不過個人是不推薦使用這種方式來寫程式
會降低程式的可讀性,不易維護
不過拿來玩玩,還挺不錯