このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C:2023 Rule 10.5
The value of an expression should not be cast to an inappropriate essential type
R2024a 以降
説明
ルール定義
The value of an expression should not be cast to an inappropriate essential type 1 .
根拠
変数の型間の変換
変換元 | ||||||||
boolean | 文字 | enum | 符号付き | 符号なし | 実数の浮動小数点 | 複素数の浮動小数点 | ||
変換先 | boolean | 回避 | 回避 | 回避 | 回避 | 回避 | 回避 | |
文字 | 回避 | 回避 | 回避 | |||||
enum | 回避 | 回避 | 回避 | 回避 | 回避 | 回避 | 回避 | |
符号付き | 回避 | |||||||
符号なし | 回避 | |||||||
実数の浮動小数点 | 回避 | 回避 | ||||||
複素数の浮動小数点 | 回避 | 回避 |
不適切な明示的キャストの例は以下のとおりです。
C99 では、
_Bool
への代入のキャスト結果は常に 0 か 1 となる。この結果は実質的な boolean 型として定義される別の型にキャストする場合は必ずしも当てはまらない。実質的な enum 型へのキャストは、その型の列挙定数のセットにない値になる可能性がある。
実質的な boolean 型からそれ以外の型へのキャストにほとんど意味はない。
浮動小数点型と文字型の間での変換は、2 つの表現の間に正確なマッピングが存在しないため、意味はない。
許容可能な明示的キャストの例は以下のとおりです。
後に続いて算術演算が実行される型を変更する。
意図的に値を切り捨てる。
明瞭性のため型変換を明示的にする。
実質的な型についての詳細は、MISRA C Rule 10.x の実質的な型を参照してください。
トラブルシューティング
ルール違反を想定していてもその違反が表示されない場合、コーディング規約違反が想定どおりに表示されない理由の診断を参照します。
例
チェック情報
グループ: 実質的な型モデル |
カテゴリ: 推奨 |
AGC カテゴリ: 推奨 |
バージョン履歴
R2024a で導入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.