Condividi tramite


Avviso C26452

Overflow aritmetico: il numero di turni a sinistra è negativo o maggiore o uguale alla dimensione dell'operando, che è un comportamento non definito (io.3)

Osservazioni:

Questo avviso indica che il conteggio dei turni è negativo o maggiore o uguale al numero di bit nell'operando spostato. In entrambi i casi viene restituito un comportamento non definito.

Avviso C4293 è un controllo simile nel compilatore Microsoft C++.

Nome dell'analisi del codice: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG

Esempio

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (hi << 32) | lo; // C26252 here
}

Per correggere questo avviso, usare il codice seguente:

unsigned long long combine(unsigned lo, unsigned hi)
{
  return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}

Vedi anche

26450
26451
26453
26454
ES.101: usare tipi non firmati per la manipolazione dei bit
ES.102: usare tipi firmati per l'aritmetica