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++
中,优先级在两个地方发挥作用:
++x - …
- ++
和(二进制)-
这两个运算符可以用在 x
上; ++
具有优先权,因此这相当于 (++x) - …
,而不是 ++(x - …)
。
… - x++
- -
和 ++
这两个运算符(二进制)可以用在 x
上; ++
具有优先权,因此这相当于 … - (x++)
,而不是 (… - x)++
。
在 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++
中,优先级在两个地方发挥作用:
++x - …
-++
和(二进制)-
这两个运算符可以用在x
上;++
具有优先权,因此这相当于(++x) - …
,而不是++(x - …)
。… - x++
--
和++
这两个运算符(二进制)可以用在x
上;++
具有优先权,因此这相当于… - (x++)
,而不是(… - x)++
。