java中i=i++問題分析


int i = 0;
i = i++;

結果還是0
為什么?

程序的執行順序是這樣的:因為++在后面,所以先使用i,“使用”的含義就是i++這個表達式的值是0,但是並沒有做賦值操作,它在整個語句的最后才做賦值,也就是說在做了++操作后再賦值的,所以最終結果還是0

讓我們看的更清晰點:

i=i++就相當於下面的語句

int temp = i;
i++; 
i = temp;

 

當然也可以從更底層的方面去理解。

在i=i++在這個語句中,實際上做了兩個賦值操作:

1:i=i//這時i的值為0
2:i=i+1//這時i的值為1

但是!

大家都知道,棧的操作是先進后出。也就是說,雖然是按1,2的順序,將兩步壓棧,但是出棧確實2,1的順序。

所以i的值先是1,然后又被第一個句子的0覆蓋,所以最終結果是0.

 

 

以上是我個人的理解,如果有不對的地方,請在評論區指出,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM