Compartilhar via


Aviso C26450

Estouro aritmético: a operação 'operador' causa estouro em tempo de compilação. Use um tipo mais amplo para armazenar os operandos (io.1)

Comentários

Este aviso indica que uma operação aritmética foi comprovadamente perdida em tempo de compilação. Isso pode ser afirmado quando os operandos são todos constantes de tempo de compilação. Atualmente, verificamos esses estouros em operações de multiplicação, adição e subtração de deslocamento esquerdo.

Aviso C4307 é uma verificação semelhante no compilador Microsoft C++.

Nome da análise de código: RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY

Exemplos

int multiply()
{
    const int a = INT_MAX;
    const int b = 2;
    int c = a * b; // C26450 reported here
    return c;
}

Para corrigir esse aviso, use o código a seguir.

long long multiply()
{
    const int a = INT_MAX;
    const int b = 2;
    long long c = static_cast<long long>(a) * b; // OK
    return c;
}

Confira também

26451
26452
26453
26454
ES.103: não estourar