我很震驚地看到這個輸出,想知道它是如何工作的內部請幫幫我。
int i=0;
i = i++;
System.out.println(i);
i=i++;
System.out.println(i);
輸出爲0和0
我很震驚地看到這個輸出,想知道它是如何工作的內部請幫幫我。
int i=0;
i = i++;
System.out.println(i);
i=i++;
System.out.println(i);
輸出爲0和0
將其更改爲
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遞增。唯一的區別是前綴版本(++結果)評估爲遞增值,而後綴版本(結果++)評估爲原始值。如果您只是執行簡單的遞增/遞減操作,則選擇哪個版本無關緊要。但是如果你在更大的表達式中使用這個運算符,那麼你選擇的運算符可能會有很大的不同。
剛剛嘗試從我的IDE(IntelliJ)中的問題運行代碼,它甚至警告我關於i ++的結果從未使用的事實 – Robin 2012-01-09 22:38:24
感謝Robin,我從您的評論中得到了答案,[janeg.ca/scjp/ OPER/prefix.html]。 – 2012-01-09 22:49:19
http://stackoverflow.com/questions/3831341/why-does-this-go-into-an-infinite-loop閱讀此內容。 – SHiRKiT 2012-01-09 22:36:57