Ostrzeżenie C26453
Przepełnienie arytmetyczne: lewe przesunięcie ujemnego numeru ze znakiem jest niezdefiniowane zachowanie (io.4)
Uwagi
To ostrzeżenie wskazuje, że lewy kod przenosi ujemną wartość całkowitą ze znakiem ujemnym, która jest niemożliwa do przeniesienia i wyzwala zdefiniowane zachowanie implementacji.
Nazwa analizy kodu: LEFTSHIFT_NEGATIVE_SIGNED_NUMBER
Przykład
void leftshift(int shiftCount)
{
const auto result = -1 << shiftCount; // C26453 reported here
// code
}
Aby poprawić to ostrzeżenie, użyj następującego kodu:
void leftshift(int shiftCount)
{
const auto result = ~0u << shiftCount; // OK
// code
}
Zobacz też
26450
26451
26452
26454
ES.101: Używanie typów niepodpisanych do manipulowania bitami
ES.102: Używanie typów podpisanych do arytmetyki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla