Condividi tramite


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

Vedi anche

26451
26452
26453
26454
ES.103: Non eseguire l'overflow