警告 C26452
算術オーバーフロー: 左シフト数が負か、オペランド サイズ以上で、未定義の動作 (io.3)
解説
この警告は、シフト数が負であるか、シフトされたオペランドのビット数以上であることを示します。 どちらの場合も、未定義の動作が発生します。
警告 C4293 は、Microsoft C++ コンパイラでも同様のチェックです。
コード分析名: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG
例
unsigned long long combine(unsigned lo, unsigned hi)
{
return (hi << 32) | lo; // C26252 here
}
この警告を解決するには、次のコードを使用します。
unsigned long long combine(unsigned lo, unsigned hi)
{
return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}
関連項目
26450
26451
26453
26454
ES.101: ビット操作に符号なし型を使用する
ES.102: 演算に符号付きの型を使用する