共用方式為


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