在這裏,我具有下面的代碼段:運算符優先級或最大蒙克規則至上爲一元運算符
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
上述行爲?
由於最大的蒙克。 – devnull
@devnull,是在JVM規範還是在JLS中提到的,或者你有關於這個的任何解釋嗎? – Zeeshan
不應該是3? a = 1,b = 1,那麼你做(a ++)+ b =(1 + 1)+1這是3? – CodeChimp