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.
以上是我個人的理解,如果有不對的地方,請在評論區指出,謝謝!