AUTOSAR C++14 Rule M5-8-1
The right hand operand of a shift operator shall lie between zero and one less than the width in bits of the underlying type of the left hand operand.
説明
ルール定義
The right hand operand of a shift operator shall lie between zero and one less than the width in bits of the underlying type of the left hand operand.
根拠
シフト演算子を使用する場合、右辺のオペランドの値は次の条件を満たす必要があります。
ゼロ以上であること。
左辺のオペランドのデータ型のビット サイズ未満であること。
上記の条件を満たさない場合、シフト演算子を使用すると未定義の動作になるため、プログラムが予測不可能な挙動をし、予期しない結果が生成されます。
Polyspace 実装
シフト演算子の右辺で負のオペランドを使用すると、Polyspace® がルール違反を報告します。シフト演算子の右辺のオペランドが左辺のオペランドのデータ型のビット サイズ以上である場合にも、Polyspace は違反を報告します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 式 |
| カテゴリ: Required、Partially automated |
バージョン履歴
R2019a で導入