Avviso C26453
Overflow aritmetico: lo spostamento sinistro di un numero con segno negativo non è definito (io.4)
Osservazioni:
Questo avviso indica che il codice a sinistra sposta un valore integrale con segno negativo, che è nonportabile e attiva il comportamento definito dall'implementazione.
Nome dell'analisi del codice: LEFTSHIFT_NEGATIVE_SIGNED_NUMBER
Esempio
void leftshift(int shiftCount)
{
const auto result = -1 << shiftCount; // C26453 reported here
// code
}
Per correggere questo avviso, usare il codice seguente:
void leftshift(int shiftCount)
{
const auto result = ~0u << shiftCount; // OK
// code
}
Vedi anche
26450
26451
26452
26454
ES.101: usare tipi non firmati per la manipolazione dei bit
ES.102: usare tipi firmati per l'aritmetica