Condividi tramite


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