Warnung C26452

Arithmetischer Überlauf: Die Anzahl der linken Schichten ist negativ oder größer als oder gleich der Operandengröße, die nicht definiert ist (io.3)

Hinweise

Diese Warnung gibt an, dass die Schichtanzahl negativ oder größer als oder gleich der Anzahl der Bits im verschobenen Operanden ist. Beide Fälle führen zu einem nicht definierten Verhalten.

Warnung C4293 ist eine ähnliche Überprüfung im Microsoft C++-Compiler.

Codeanalysename: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG

Beispiel

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (hi << 32) | lo; // C26252 here
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}

Siehe auch

26450
26451
26453
26454
ES.101: Verwenden von nicht signierten Typen für bitmanipulation
ES.102: Verwenden von signierten Typen für Arithmetik