答案是什么:
class abcd
{
public static void main(String ar[])
{
int a=2, b=3, c;
c = a++ * --b - b++ + ++a;
System.out.println(a+" "+b+" "+c);
}
}
编译器给出的输出为:4 3 6。我得到 a=4 和 b=3,但我无法求解 c。我出来了c = 7。
运算符优先级太混乱。有人请帮忙。:(
答案是什么:
class abcd
{
public static void main(String ar[])
{
int a=2, b=3, c;
c = a++ * --b - b++ + ++a;
System.out.println(a+" "+b+" "+c);
}
}
编译器给出的输出为:4 3 6。我得到 a=4 和 b=3,但我无法求解 c。我出来了c = 7。
运算符优先级太混乱。有人请帮忙。:(
操作数从左到右进行评估,因此您的代码等效于:
int a = 2, b = 3, c = 0;
int tmp1 = a++; //tmp1 = 2, a = 3
int tmp2 = --b; //tmp2 = 2, b = 2
int tmp3 = b++; //tmp3 = 2, b = 3
int tmp4 = ++a; //tmp4 = 4, a = 4
c = tmp1 * tmp2 - tmp3 + tmp4; // c = 2 * 2 - 2 + 4 = 6
至于你发布的链接,它只说公式应该读为:
c = ( ( (a++) * (--b) ) - (b++) + (++a) );