Aviso C26450

Estouro aritmético: a operação 'operador' causa estouro em tempo de compilação. Usar um tipo mais largo 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. Ele 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.

O aviso C4307 é uma verificação semelhante no compilador do 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

C26451
C26452
C26453
C26454
ES.103: não estourar