C言語なら俺に聞け! Part 101
■ このスレッドは過去ログ倉庫に格納されています
0644デフォルトの名無しさん
05/02/07 00:17:19規格の文面は知らないけど
if (a || b || c || d)
の場合、aの条件が成立していたら、
b以降は、「評価してはいけない」んじゃないかな。
これはもちろん、関数呼び出しや変数の増減以外の、
単純な「変数の値の評価」も含めて。
というのは、極端な話、メモリマップドIOの領域だったら
読み出すだけで動作が変わるわけだし。
volatileを付けても「変数の値が前回と違うかもしれないから毎回読み出す」だけで
「最適化のためにメモリから読み出す」という動作(がもしあるならば)には影響しないはず。
実際、件のif (||)を最適化して分岐を減らすコンパイラというものを
俺は見たことはない。
(脳内コンパイラや脳内標準規格を持っている人のことは知らないが)
■ このスレッドは過去ログ倉庫に格納されています