2012-01-09 171 views
0

可能重複:
What is x after 「x = x++」?Postfix的概念

我很震驚地看到這個輸出,想知道它是如何工作的內部請幫幫我。

int i=0; 
i = i++; 
System.out.println(i); 
i=i++; 
System.out.println(i); 

輸出爲0和0

+0

http://stackoverflow.com/questions/3831341/why-does-this-go-into-an-infinite-loop閱讀此內容。 – SHiRKiT 2012-01-09 22:36:57

回答

1

將其更改爲

int i=0; 
i++;//note the removed i = 
System.out.println(i); 
i++;//note the removed i = 
System.out.println(i); 

,它會如預期

Oracle documentation及其demo code,並引用最相關部分

遞增/遞減運算符可以在操作數之前(前綴)或之後(後綴)應用。代碼結果++;和++結果;兩者的結果都會以1遞增。唯一的區別是前綴版本(++結果)評估爲遞增值,而後綴版本(結果++)評估爲原始值。如果您只是執行簡單的遞增/遞減操作,則選擇哪個版本無關緊要。但是如果你在更大的表達式中使用這個運算符,那麼你選擇的運算符可能會有很大的不同。

+0

剛剛嘗試從我的IDE(IntelliJ)中的問題運行代碼,它甚至警告我關於i ++的結果從未使用的事實 – Robin 2012-01-09 22:38:24

+0

感謝Robin,我從您的評論中得到了答案,[janeg.ca/scjp/ OPER/prefix.html]。 – 2012-01-09 22:49:19