一句話看C++與Java之間的區別

在學習Java的過程中,我發現同樣一條語句,C++和Java下有不同的執行結果


int x = 1;

x = x++;

print(x);


那麼在C++下,程序輸出結果爲2;

而在Java下,程序輸出結果卻爲1。


其實在語法上都是正確定義了++運算符的優先級,而導致其二者運算結果的不同,究其原因,是編譯器的區別,因爲在C\C++的編譯器中,將等式右邊表達式的值放入了寄存器中,也沒有嚴格按照運算符的優先級來參與運算,所以等式左邊的值就等於表達式的值爲1,然後再執行++操作,最後X即爲2;而在Java\C#的編譯器中,是嚴格按照++運算符的優先級來參與運算的,因爲++在表達式右側,所以先將1的值存入棧中,然後執行++操作,X變爲2,最後纔將棧中的值1賦值給X,所以X的值還是等於1。


在此,也要非常感謝網友@Sandy的博客:http://www.cnblogs.com/Sandy945/archive/2011/06/06/2073613.html

給我們提供了一個可靠的參考解說。

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