副作用関連の未定義について教えて下さい

> 直前の副作用完了点から次の副作用完了点までの間に,式の評価によって一つのオブジェクトに格納さ れた値を変更する回数は,高々1 回でなければならない。
> さらに,変更前の値の読取りは,格納される値 を決定するためだけに行われなければならない
の2行めが何を言っているかさっぱり分からんとです。

i = i + 1; // ... (1)
a[i] = i++; // ... (2)

(1)が許されて、(2)は許されないことから逆算して考えてみました。


・「変更前の値の読取り」は、「格納される値 を決定する」ケースにおいてのみ許される

・「変更前の値の読取り」とは、(1)における右辺のi、(2)における左辺のiを示す
イコール「副作用の発生するオブジェクトの値の読み取り(その値は副作用による変更前のものになる)」

・「格納される値 を決定するため」は、「代入される値を算出するため」
 ((2)は、配列の位置を決めるためだからNG)

という認識であっていますでしょうか?


a = i + i++;
とか(2)がダメなら何となくダメそうに感じましたが、
iが「代入される値を算出するため」にしか使われていないからOKだったりしますか?