魔神仔

堅持~加油~

每月文章

文章分類

文章標籤

全部標籤

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是一樣的


原始碼下載 

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

DotBlogs Tags: ASP.NET C posted on 2008/5/7 01:59 | 我要推薦 | 閱讀數 : 493 | 文章分類 [ ASP.NET ] 訂閱

Feedback

# re: C# 的 i++ 和 ++i 2008/5/7 上午 10:29 Phoenix 回覆

++運算子雖然並不能隨意的使用,在使用前總是要想一下,確定正確性才使用,不過我卻一直很喜歡這個運算子,因為利用這個運算子可以產生很多像魔術一樣的程式碼,也是這一點才讓我一直無法放棄寫程式這條路。

# re: C# 的 i++ 和 ++i 2008/6/5 下午 12:58 生魚片 回覆

我覺得這並不會降低的可讀性,且不易維護,當然前提是從C/C++出身的工程師,能夠寫出好軟體的C/C++工程師一定很習慣這樣的寫法,畢竟這是基本用法:XD

標題
姓名
電子郵件 (將不會被顯示)
個人網頁
內容
登入後使用進階評論
Please add 2 and 3 and type the answer here: