Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java操作符优先级:输出是什么_Java - Fatal编程技术网

Java操作符优先级:输出是什么

Java操作符优先级:输出是什么,java,Java,以下问题的答案是什么: 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

以下问题的答案是什么:

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) );

编译器是正确的,这里的实际问题是什么?达菲莫也是正确的!谁在乎呢?任何理智的人都不应该写这样的代码。请详细说明解决方案。@RvyPandey没有人给出答案solution@RvyPandey:如果你刚开始学习,就不要写这样的代码。不要混合使用增量前或增量后,除非ss它使您的代码更易于阅读。如果您发现像上面这样编写的真实代码,请重新编写以使其有意义。这会让您更加困惑。非常感谢,伙计。这确实有帮助:)