警告 C26453
算術オーバーフロー: 負の符号付き数値の左シフトは未定義の動作です (io.4)
解説
この警告は、コードが負の符号付き整数値を左にシフトし、これは非可用であり、実装定義の動作をトリガーしたことを示します。
コード分析名: LEFTSHIFT_NEGATIVE_SIGNED_NUMBER
例
void leftshift(int shiftCount)
{
const auto result = -1 << shiftCount; // C26453 reported here
// code
}
この警告を解決するには、次のコードを使用します。
void leftshift(int shiftCount)
{
const auto result = ~0u << shiftCount; // OK
// code
}
関連項目
26450
26451
26452
26454
ES.101: ビット操作に符号なし型を使用する
ES.102: 演算に符号付きの型を使用する