的下面是輸出6
一個例子:優先級一元操作
public static void main(String[] args) {
int i = 1;
m(++i);
}
static void m(int i) {
i = ++i + i++;
System.out.println(i);
}
我們得到6
因爲在第一3
和3
的m(int i)
方法進行了總結,然後i
成爲4
(由於i++
)但在此之後i
從左邊部分取總結6
值。
但是,如果方法改變爲如下,我們得到7
:
static void m(int i) {
i = ++i + ++i;
System.out.println(i);
}
但我希望看到7
在這兩種情況下(我已經被事實指導,即一元操作,在這種情況下,遞增,具有比二元操作更高的優先級)。有人能否提供第一個例子中被忽略的i++
的解釋(或參考解釋)?
遞增運算符從左到右運行,'i ++'返回遞增前的結果,即i。即++我讓我6,然後我+我得到計算,然後我++增加了另一次。 – mihi 2012-03-26 16:58:45
'i ++ + ++ i'會向你顯示2 + 4 = 6,並且'i ++ + i ++'是2 + 3 = 5 – mihi 2012-03-26 17:00:11
最後但並非最不重要的'i = i ++'沒有效果,因爲它會在遞增之前分配值回到我:) – mihi 2012-03-26 17:01:05