java 编程一元运算符优先级

java programming unary operator precedence

我想知道运算符优先级在下面的代码中是如何工作的。

public class test {

    public static void main(String[] args) {
        int a=0,b;
        b= a++ + ++a * ++a;
        System.out.println(a+"   "+b);
    }

}

我得到了 3 6 作为输出......但我不明白它是如何工作的。 谁能解释一下它是如何工作的。

a++表示a在求值后递增

++a 表示 a 在求值前递增

a一共增加了3次,所以表达式计算后的值为3

b= a++ + ++a * ++a;表示a求值(0),然后递增,这个(0)加到++a * ++a的结果上,表示左边部分为2(因为a,之前为1,在评估前自增,因此评估为2),右边部分为3(a为2,在评估前自增,因此评估为3)。因此表达式的结果是 2 * 3 = 6.

为了更好地解释这些增量:

x = ++a; 就像 a = a + 1; x = a;

x = a++; 就像 x = a; a = a + 1;