在这里,我有以下代码:
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
,由于最大咀嚼规则而无法编译。它将成为x = (a++) ++ b
编译错误。
上述行为是x=a+++b
由于运算符 ++ 的优先级还是由于最大咀嚼规则?