2011年11月6日 星期日

該死的 x++ 和 ++x 到底是啥小

其實講義寫得很明白 //但是我看得很模糊

讓我們看看講義128頁 遞增運算

++

●後置 and 前置

int a = 5;

//a++ 即 a = a + 1

a++; /* 5為此後置Expression的值 */

a=5;

//++a 即 a = a + 1

++a; /* 6為此後置Expression的值 */

 

 

 

 

喔 我的天 是我眼花嗎

a++ 即 a = a + 1

++a 即 a = a + 1

那他們到底有他X的什麼不同???

 

 

 

 

我們看看曹山的說法

曹山:這一切都沒有錯,只不過你走進了黃泉路666號

 

 

 

 

以上博君一笑,以下解答

單看a++和++a的確沒啥不同 都是a = a + 1的意思

但是與其他運算式加在一起就有所分別

範例

從結果來看就很清楚

x++和++x都會重新對x的值+1

所以

第3行 X初值為10

第4行 X值改為11

第5行 X值改為12

而後面c d 前面有10 * 運算

其意義為

10 * x++ 為[10先乘x]再將[x = x + 1]

10 * ++x 為[先將]x = x + 1[再乘10]

所以

第6行可以看做

c = 10 * x;//x=12

x = x + 1;//x=13

第7行可以看做

x = x + 1;//x=14

d = 10 * x;//x=14

 

 

 

 

簡單來說

x++ 就是會先與其他算式運算 之後才 x = x + 1 將x值增1

++x 就是先 x = x + 1 將x值增1 之後才與其他算式運算

2 則留言:

  1. 不好意思,不懂為什麼x=10,a已經x++了,最後輸出還是a=10?

    回覆刪除
  2. 因為x++的順序比a=x後面 a=x之後才做x++ 所以第四行執行後a=10而x=11

    回覆刪除