int x = 1;
System.out.println(x++ + x++ * --x);
上面的代碼打印出「5」,但我不明白怎麼做?我一直得到零的最後一個x然後乘以第二個x仍然是0然後我得到2?請幫忙!Java優先順序
int x = 1;
System.out.println(x++ + x++ * --x);
上面的代碼打印出「5」,但我不明白怎麼做?我一直得到零的最後一個x然後乘以第二個x仍然是0然後我得到2?請幫忙!Java優先順序
程序處理您的聲明的方式如下:
x = 1;
1 + (increment x) 2 * (increment x)(decrement x) 2 =
1 + 2 * 2 =
1 + 4 =
5
補充:
如果你問它打印出來給你,而不是實際上做算術,你會看到什麼在X的實際等於:
int x = 1;
System.out.println(x++ + " + " + x++ + "*" + --x);
輸出:1 + 2*2
它的工作原理是這樣的:
System.out.println(x++ + x++ * --x);
由於前兩個是他們不會,直到之後的值已經放在執行1被放在第一x
則該值增加到2.後綴。 2被放入第二x
和值增加到3.
System.out.println(1 + 2 * --x);
由於--x
被前綴操作之前在值膠層完成。因此它將等於2並且x
將等於2。
System.out.println(1 + 2 * 2);
此之後,它的工作原理相同,因爲它通常會在數學(乘法加法之前)。
public static void main(String[] args) {
int x ;
x = 1;
System.out.println(x++);
//1
System.out.println(x++ * --x);
//2*--3 = 2*2 = 4
System.out.println(x++ + (x++ * --x));
//1 + 4 = 5
System.out.println(x++ + x++ * --x);
//1 + 4 = 5
}
現在是完美的感覺!謝謝@blahfunk! – Matthew