C言語なら俺に聞け! Part 135©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0229デフォルトの名無しさん
2016/05/24(火) 22:12:51.25ID:fsM+Gj6y> 直前の副作用完了点から次の副作用完了点までの間に,式の評価によって一つのオブジェクトに格納さ れた値を変更する回数は,高々1 回でなければならない。
> さらに,変更前の値の読取りは,格納される値 を決定するためだけに行われなければならない
の2行めが何を言っているかさっぱり分からんとです。
i = i + 1; // ... (1)
a[i] = i++; // ... (2)
(1)が許されて、(2)は許されないことから逆算して考えてみました。
・「変更前の値の読取り」は、「格納される値 を決定する」ケースにおいてのみ許される
・「変更前の値の読取り」とは、(1)における右辺のi、(2)における左辺のiを示す
イコール「副作用の発生するオブジェクトの値の読み取り(その値は副作用による変更前のものになる)」
・「格納される値 を決定するため」は、「代入される値を算出するため」
((2)は、配列の位置を決めるためだからNG)
という認識であっていますでしょうか?
a = i + i++;
とか(2)がダメなら何となくダメそうに感じましたが、
iが「代入される値を算出するため」にしか使われていないからOKだったりしますか?
■ このスレッドは過去ログ倉庫に格納されています