Sdílet prostřednictvím


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;
}

Viz také

26451
26452
26453
26454
ES.103: Nepřetečení