Ostrzeżenie C26452
Przepełnienie arytmetyczne: liczba zmian w lewo jest ujemna lub większa lub równa rozmiarowi operandu, który jest niezdefiniowanym zachowaniem (io.3)
Uwagi
To ostrzeżenie wskazuje, że liczba zmian jest ujemna lub większa lub równa liczbie bitów w przesuniętym operandzie. Każda wielkość liter powoduje niezdefiniowane zachowanie.
Ostrzeżenie C4293 jest podobnym sprawdzeniem w kompilatorze Microsoft C++.
Nazwa analizy kodu: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG
Przykład
unsigned long long combine(unsigned lo, unsigned hi)
{
return (hi << 32) | lo; // C26252 here
}
Aby poprawić to ostrzeżenie, użyj następującego kodu:
unsigned long long combine(unsigned lo, unsigned hi)
{
return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}
Zobacz też
26450
26451
26453
26454
ES.101: Używanie typów niepodpisanych do manipulowania bitami
ES.102: Używanie typów podpisanych do arytmetyki