class T {
public static void main(String args[]) {
int x = 0;
x = x++;
System.out.println(x);
}
}
爲什麼輸出爲0?
回答
因爲++
是「後增量」運算符 - 它在之前返回變量的值,它會增加。
的步驟是:
- 取
i
值(增加前),並記住它 - 增量
i
- 分配的記憶值
i
感謝RichieHindle!很好的解釋 ! – user989093
@ user989093務必在最適合您的問題的答案上使用綠色複選標記。 –
因爲POST增量運算符返回一個時間值(x
的當前值),然後遞增x。
試試這樣說:
class T {
public static void main(String args[]) {
int x = 0;
x = ++x;
System.out.println(x);
}
}
或者只是'x ++',沒有'x ='部分。 :) – Dougal
由於您使用後綴++
運營商,這意味着它在轉讓之後進行評估。因此首先對x = x
進行評估,因此x
保持爲0
,然後對x++
進行評估,但結果未分配給任何內容。
你可以使用前綴++
操作來實現你想要的結果:x = ++x;
從docs:
遞增/遞減運營商可以之前(前綴)或之後 應用(後綴)操作數。代碼結果++;和++結果;將 兩端的結果加1。唯一的區別是 前綴版本(++結果)評估爲遞增值, 而後綴版本(結果++)評估爲原始 值。
x++
返回零,然後增加x。這是0.
x = x++;
x = x++
設置x
(它已遞增之後)的x++
返回值的分配,相當於
temp = x;
x = x + 1;
x = temp;
這就是爲什麼輸出爲零。
該算子被稱爲後增加算子。 與增量後操作符相關的其他操作符是,每增量操作符。
x = ++x;
如果你申請每遞增輸出爲1
因爲++後添加的程序運行後。您可以通過以下兩種方式
class T {
public static void main(String args[]) {
int x = 0;
x = ++x;
System.out.println(x);
}
}
或
class T {
public static void main(String args[]) {
int x = 0;
x += 1;
System.out.println(x);
}
}
修復它這是因爲x++
實際上意味着,「使用存儲在x
的值,然後加一」。如果您想在使用前增加該值,請改爲++x
。
我不知道現在,它會使輸出的差異,但你並不需要進口,你可以改變:
x = x++;
到:
x++;
顯示例子如前面的回答者所說:
class T {
public static void main(String args[]) {
for (int i = 0; i < 6; i++) {
int x = 0;
x = x+1+i;
System.out.println(x);
}
}
}
解釋你在做什麼:
class T {
public static void main(String args[]) {
int x = 0; // x is zero
x = x++; // assign x to be x (which is 0).
// then increment a non-existant variable by 1
System.out.println(x); //print 0
}
}
- 1. 爲什麼trunc(1)輸出爲0?
- 2. 爲什麼此代碼輸出「0」?
- 3. Math.random()爲什麼不輸出0?
- 4. 爲什麼總是給輸出0 0 0?
- 5. 爲什麼我得到0的輸出0
- 6. 爲什麼溢出結果爲0?
- 7. 爲什麼預測一個因子爲0的輸出?
- 8. 爲什麼我的程序輸出中gr計數爲0?
- 9. 爲什麼JavaScript中的「0 === -0」爲true?
- 10. 爲什麼xspeed!= 0?
- 11. 爲什麼bytes.length = 0?
- 12. 爲什麼輸出是5?
- 13. 爲什麼輸出是yyxz?
- 14. 爲什麼輸出不同?
- 15. 爲什麼輸出錯誤?
- 16. 爲什麼是responseText輸出?
- 17. 爲什麼沒有輸出?
- 18. 爲什麼`做{...;出口(...); (0)`in C?
- 19. 分區給出0循環,爲什麼?
- 20. CUDA輸出始終爲0
- 21. 爲什麼在c#級輸出參數返回0?
- 22. 爲什麼我的函數在創建num(0)和NULL輸出?
- 23. 爲什麼輸出下面的代碼1而不是0?
- 24. 爲什麼2D數組總是在C中輸出0?
- 25. 爲什麼\ 0在java中的不同系統中輸出不同的輸出
- 26. 爲什麼地圖記錄輸出= 0,即使當我在mapper中輸出時
- 27. Sugeno,設置輸出值0和1,爲什麼有時輸出值是0.5
- 28. 爲什麼打印輸出不爲空?
- 29. 爲什麼multipl輸出行爲grep
- 30. 爲什麼在IPython的Jupyter筆記本中,時間輸出爲Wall time:0 ns?
看看這有助於解釋http://stackoverflow.com/questions/1094872/is-there-a-difference-between-x-and- x-in-java – Sean
下面的答案給出了原因。如果您想知道的不僅僅是理由,而且實際上也需要解決方案,請使用前綴運算符:'++ x'。 –
可能重複的[爲什麼會進入無限循環?](http://stackoverflow.com/questions/3831341/why-does-this-go-into-an-infinite-loop) – nawfal