プロジェクトでCoverityPreventを使用してエラーを見つけています。
この式のエラーを報告します(もちろん変数名は変更されます):
x=
(a>= b) ?
++x: 0;
メッセージは次のとおりです。
EVALUATION_ORDERの欠陥:「
x=(a>= b) ? ++x: 0;
」では、「x
」は「x
」(割り当てLHS)で記述され、「(a>= b) ? ++x: 0;
」で記述されますが、介在するシーケンスポイントがないため、副作用が発生する順序は定義されていません。メッセージの終わり
「x = x++
」は未定義ですが、これは少し難しいです。これは誤検知ですか?