次の方法で共有


警告 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: 演算に符号付きの型を使用する