MISRA C++:2008 Rule 5-0-1
The value of an expression shall be the same under any order of evaluation that the standard permits
説明
ルール定義
The value of an expression shall be the same under any order of evaluation that the standard permits. 1
根拠
評価の順序に応じて式の結果が異なる値になる場合、その値は処理系定義になります。
Polyspace 実装
Polyspace® は、式が以下の条件を 1 つでも満たす場合、違反を報告します。
同じ変数が式内で複数回変更される、あるいは同じ変数に対して読み取りと書き込みの両方が実行される。
式が複数の評価順序を許可している。
式内で単一の
volatileオブジェクトが複数回出現する。式に複数の
volatileオブジェクトが含まれる。
volatile オブジェクトは随時、その値を変更可能であるため、複数の volatile 変数または同じ volatile 変数の複数のインスタンスが含まれる式は、評価順序によって結果が異なる可能性があります。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: Expressions |
| カテゴリ: 必要 |
バージョン履歴
R2013b で導入1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.