有人能解釋爲什麼這代碼的輸出是前綴和後綴增量,同時比較變量
not equals
not equals 2
第一
if語句似乎A = 0 B/C是一個後綴增量;因此下一行不會增加;然而,這兩個a不相等爲什麼?而在第二種情況下,如果我運行調試器時a的值是2,但測試是錯誤的,爲什麼?
public static void main (String[] args)
{
int a = 0;
if (a++ == a++) {
System.out.println("equals");
} else {
System.out.println("not equals");
}
if (++a == 2) {
System.out.println("equals 2");
} else {
System.out.println("not equals 2");
}
}
可能重複[爲什麼JAVA語句評估正在發生這樣的?](http://stackoverflow.com/questions/12036481/why-java-statement-evaluation-is-occurrence-like-these) – raina77ow
ahh,沒關係..在第一個如果a增加兩次,所以是0 == 1;那麼a在下一行再次遞增,所以a現在是2.在第二個如果先增加並且稍後比較,那麼a是3和3!= 2;因此,答案:不等於,不等於2 – miatech
這是完全重複的,已經[**回答**](http://stackoverflow.com/a/12036576/1229023)非常好的細節(帶鏈接包括文檔)。爲什麼你沒有使用搜索,我想知道? – raina77ow