在學習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
給我們提供了一個可靠的參考解說。