我想知道运算符优先级如何在下面的代码上运行。
public class test {
public static void main(String[] args) {
int a=0,b;
b= a++ + ++a * ++a;
System.out.println(a+" "+b);
}
}
我得到了3 6 ......但我不明白它是如何运作的。 任何人都可以解释它是如何运作的。
答案 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;