后缀和前缀运算符的行为(Java)

时间:2014-06-06 11:25:47

标签: java

假设我有a+++b。编译器计算(a++)+b而不是a+(++b)。为什么呢?

2 个答案:

答案 0 :(得分:1)

因为Postfix运算符有更多precedence超过前缀运算符。

  

具有简单且可记忆良好的优先级列表的优点   其中所有后缀运算符都在任何前缀运算符之前   足以容忍总是不得不使用的小缺点   括号来组成前缀和后缀运算符++ / - ,就像这样   组成很少使用。

答案 1 :(得分:1)

严格地说,++a在Java中不是前缀运算符,它是unary。并且它比后缀运算符(a++)少precedence

通常,编译器将首先执行具有更高优先级的运算符。因此,第一个后缀运算符(在您的情况下a++首先执行,添加运算符+秒。