C標準は言う
実際の実装では、その値が使用されておらず、必要な副作用 (関数の呼び出しまたは揮発性オブジェクトへのアクセスによるものを含む) が生成されていないと推測できる場合、式の一部を評価する必要はありません。
volatile
変数が必要ないのはいつですか? このパラグラフによれば、volatile
は、他の非volatile
オブジェクトと同様に as-if ルールの対象になるように見えます。
重複していないリンクされた質問で与えられた回答は、上記の引用された段落に対処していないため、私には役に立ちません
- 値が「使用済み」と見なされるのはいつですか? 上記の引用によると、対応するアクセスを省略できるため、「オブジェクトから値を読み取る」とは異なるようです。
- 「必要な副作用」とは何ですか?
以下のコメントを参照してください。