如何评价 java 运算符评价

How to evaluate the java operators evaluation

我是 java 新手,正在尝试了解如何执行计算步骤以获得最终结果。最终答案是 49。查看优先级运算符层次结构,我的计算结果不是 49。

以下是我的表达式代码:

class Test
{
  public static void main(String args[])
  {
   int a = 6, b = 5;
   a = a + a++ % b++ *a + b++ * --b;
   System.out.print(a)
  }

} 

运营商有优先权。其中有 table 个 here

此外,您可以使用圆括号(圆括号)来强制执行正确的计算顺序。

模运算与除法和乘法具有相同的优先级。下一个优先级是加法和减法。运算从左到右进行。

为更清楚起见添加括号:

      ( a ) + ( a++ % b++ *a ) + ( b++ * --b )
group   I         II                 III
  1. a++ % b++ *a 计算为 :a。 (6 % 5) = 1
    b. 1 * 6 到现在,a = 6, b = 5

完成此操作后,a和b的值分别增加到7和6。即 post 修复增量仅在步骤或组中的 modulo/multiplication/division 之后发生,如上所示。

  1. b++ * --b => 6 * 6. 给出值 36 完成此操作后,会执行 ++ 操作,但也会执行 -- 操作,有效地将 b 的值保留为 6。

  2. 接下来的操作是加法。即 7 + 6 + 36 = 49

参考:https://www.programiz.com/java-programming/operator-precedence