Avviso C26450
Overflow aritmetico: l'operazione 'operator' causa l'overflow in fase di compilazione. Usare un tipo più ampio per archiviare gli operandi (io.1)
Osservazioni:
Questo avviso indica che un'operazione aritmetica è stata di provata perdita in fase di compilazione. Può essere asserito quando gli operandi sono tutte costanti in fase di compilazione. Attualmente, controlliamo le operazioni di spostamento a sinistra, moltiplicazione, addizione e sottrazione per tali overflow.
Avviso C4307 è un controllo simile nel compilatore Microsoft C++.
Nome dell'analisi del codice: RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY
Esempi
int multiply()
{
const int a = INT_MAX;
const int b = 2;
int c = a * b; // C26450 reported here
return c;
}
Per correggere questo avviso, usare il codice seguente.
long long multiply()
{
const int a = INT_MAX;
const int b = 2;
long long c = static_cast<long long>(a) * b; // OK
return c;
}