警告 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:使用帶正負號的類型進行算術