爲什麼z=z++,z的結果沒變?

int z = 2;
z = z++;
cout<<z;//輸出仍爲2

在codeblocks、dev c++中輸出是2
在VC中輸出是3

這是爲什麼?

答案:不同編譯器對後綴++運算符的實現不一樣。

簡潔地回答一下:
若a=2;
a++ 是創建一個副本a’=2,a加1,返回副本a’。
++a 是a加1,返回a。

所以在 z=z++時,++運算符的優先級比=高,先執行++運算符要做的事。
先創建z’=2,z加1爲3,準備返回副本z’。後綴++已經執行完了,這時只執行=,使值爲3的z被賦值z’,最終z=2!

不同編譯器對於++的實現是不同的,使它要做的事也不同。VC中,是沒有創建副本z’,先執行賦值語句,再自增1。所以會不同,這是不同編譯器的原因。

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