Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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;
}