Upozornění C26450
Aritmetické přetečení: Operace operátoru způsobuje přetečení v době kompilace. Použití širšího typu k uložení operandů (io.1)
Poznámky
Toto upozornění značí, že aritmetická operace byla v době kompilace prokazatelně ztráta. Lze jej uplatnit, když jsou operandy všechny konstanty kompilační doby. V současné době u takových přetečení kontrolujeme levý posun, násobení, sčítání a odčítání.
Upozornění C4307 je podobná kontrola kompilátoru jazyka Microsoft C++.
Název analýzy kódu: RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY
Příklady
int multiply()
{
const int a = INT_MAX;
const int b = 2;
int c = a * b; // C26450 reported here
return c;
}
Chcete-li toto upozornění opravit, použijte následující kód.
long long multiply()
{
const int a = INT_MAX;
const int b = 2;
long long c = static_cast<long long>(a) * b; // OK
return c;
}