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