C はシーケンス ポイントの概念を使用してあいまいな計算を識別し、その=
演算子はシーケンス ポイントではないことを理解しています。ただし、ステートメントの実行にあいまいさは見られません
i = ++i
私の理解では、これは単純に にあるものを評価し&i
、それをインクリメントして、同じ場所に戻すことになります。それでも、GCC は次のようにフラグを立てます。
[警告] 'i' に対する操作は未定義の可能性があります [-Wsequence-point]
=
どのように機能するか について何かが欠けていますか?
編集: 重複としてマークする前に、シーケンス ポイントと未定義の動作に関する他の投稿を閲覧したことに注意してください。それらのどれも具体的に式に対処していません( prei=++i
-incrementに注意してください)。言及されている表現は一般的に、 などです。私はそれらのいずれについても疑いの余地はありません。i=i++
a=b++ + ++b