java 8 中的优先运算符 - 后缀运算符在前

precedence operator in java 8 - postfix operator first

precedence operator in java 8 之后很明显,后缀运算符 (expr++ expr--) 的优先级高于一元运算符、前置一元运算符 (++expr --expr)。 但是当执行这段代码时:

x = 3; y = ++x - x++;

y的值为0

但是对我来说,按照上面的table,结果应该是 y = (5 - 3) 因为 x++ 应该首先计算。

谁能解释为什么这是 y = 0 而不是 y = 2?

When do I use the Operator precedence on the same line in an expression? or why there is an operator precedence order and when is used?

运算符优先级决定了几个运算符中的哪一个与操作数相关联。在表达式 ++x - x++ 中,优先级在两个地方发挥作用:

  1. ++x - … - ++ 和(二进制)- 这两个运算符可以用在 x 上; ++ 具有优先权,因此这相当于 (++x) - …,而不是 ++(x - …)
  2. … - x++ - -++ 这两个运算符(二进制)可以用在 x 上; ++ 具有优先权,因此这相当于 … - (x++),而不是 (… - x)++