MISRA C:2012 Rule 10.7
If a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential type
説明
If a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed, then the other operand shall not have wider essential type 1 .
根拠
"複合式" は複合演算子を使用した非定数式です。実質的な型モデルでは、複合演算子は以下になります。
乗算 (
*、/、%)加算 (二項
+、二項-)ビット単位 (
&、|、^)シフト (
<<、>>)条件 (
?、:)
複合式での暗黙的な変換を制限するということは、式内の一連の算術演算が同じ実質的な型を使用しなければならないことを意味します。この制限により混乱を低減し、値、符号、精度またはレイアウトの損失を回避します。ただし、このルールは式内のすべてのオペランドが同じ実質的な型であると示すものではありません。
実質的な実数の浮動小数点型と実質的な複素数の浮動小数点型の間で算術演算を実行することは、このルールの違反になりません。
実質的な型の詳細については、MISRA C ルール チェックで使用される実質的な型モデルを参照してください。
Polyspace 実装
複合式のオペランドが、より範囲が広い実質的な型に暗黙的に変換される場合、Polyspace® はこのルールの違反を報告します。
Polyspace は、ポインター演算と、実質的な実数の浮動小数点型および実質的な複素数の浮動小数点型の間での変換に対しては、このルールの違反を報告しません。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
| グループ: 実質的な型モデル |
| カテゴリ: 必要 |
| AGC カテゴリ: 推奨 |
PQL 名: std.misra_c_2012.R10_7 |
バージョン履歴
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.