1 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個贊
15.26.1。簡單賦值運(yùn)算符 =
如果左側(cè)操作數(shù)是數(shù)組訪問表達(dá)式(第 15.10.3 節(jié)),可能包含在一對或多對括號中,則:
首先,計算左側(cè)操作數(shù)數(shù)組訪問表達(dá)式的數(shù)組引用子表達(dá)式。如果這個評估突然完成,那么賦值表達(dá)式也會因?yàn)橥瑯拥脑蛲蝗煌瓿?;索引子表達(dá)式(左側(cè)操作數(shù)數(shù)組訪問表達(dá)式的)和右側(cè)操作數(shù)不被求值,也不發(fā)生賦值。
否則,計算左側(cè)操作數(shù)數(shù)組訪問表達(dá)式的索引子表達(dá)式。如果此求值突然完成,則賦值表達(dá)式會出于同樣的原因突然完成,并且不會對右側(cè)操作數(shù)進(jìn)行求值,也不會發(fā)生賦值。
我假設(shè)評估順序應(yīng)該如下
a[i++] = a[i++] + 2;
? ^? ? ? ^ ^
? 1? ? ? 3 2
? ? ? ? ?----------
? ? ? ? ? ? ?^
? ? ? ? ? ? ?4
------
? ^
? 5
--------------------
? ? ? ? ?^
? ? ? ? ?6
我們可以通過運(yùn)行這段代碼來證明這一點(diǎn)
int[] a = {0, 10, 0, 0};
int i = 0;
a[i++] = a[i++] + 2;
System.out.println(Arrays.toString(a)); // [12, 10, 0, 0]
System.out.println(i);? ? ? ? ? ? ? ? ? // 2
添加回答
舉報