Tag: unary operator

对于一元运算符,运算符优先级或最大蒙克规则首先出现

在这里,我有以下代码: int a,b,x; a=b=1; x=a+++b; 现在x的值将是2,因为a首先是后递增 ,然后它被添加到b 。 以下是编译的字节代码: 0 iconst_1 1 dup 2 istore_2 [b] 3 istore_1 [a] 4 iload_1 [a] 5 iinc 1 1 [a] 8 iload_2 [b] 9 iadd 10 istore_3 [x] 所以表达式将等于x = (a++) + b 。 现在另一个表达式x=a++++b ,由于最大的munch规则而无法编译。 它将成为x = (a++) ++ b ,因此编译错误。 上述x=a+++b行为是因为运算符 ++的优先级还是因为最大的munch规则 ?

++ i + i ++评估

由于这篇文章,混乱上升了。 作者更新了他的post,结果变得清晰。 结论:Java 从左到右评估表达式 关闭! 由于表达式的评估是从右到左完成的,因此以下代码应该在j存储5 : int i=2; int j=++i+i++; System.out.println(j); 但我得到6作为输出,这迫使我重新思考左右评价的想法。 请在这里解释一下理论。