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;
我想知道运算符优先级在下面的代码中是如何工作的。
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;