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