Tag: operator precedence

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

在这里,我有以下代码: 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规则 ?

Java中的++和 – 运算符的优先级

我从Java的官方教程中读到前缀和后缀++ – 具有不同的优先级: 后缀:expr ++ expr– 一元:++ expr –expr + expr -expr~! 运营商 根据教程,不应该这样 d = 1; System.out.println(d++ + ++d); 打印6( d++使d 2, ++d使它成为3)而不是4? 我知道预先评估++d的解释,但如果d++优先级高于++d ,为什么不首先评估d++ ? 更重要的是,在什么情况下d++应该表明它具有更高的优先级? 编辑: 我尝试了以下方法: d = 1; System.out.println(++d * d++); 它返回4.它似乎应该是2 * 2,而不是1 * 3。