java编程一元运算符优先级

时间:2015-08-24 12:12:47

标签: 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 ......但我不明白它是如何运作的。 任何人都可以解释它是如何运作的。

1 个答案:

答案 0 :(得分:0)

a ++表示a在评估后递增

++ a表示a在评估之前递增

a总计增加三次,因此在计算表达式后其值为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;

类似