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: o deslocamento para a esquerda de um número com sinal negativo é um comportamento indefinido (io.4)
Comentários
Esse aviso indica que o código desloca para a esquerda um valor integral com sinal negativo, que não é portátil e dispara o comportamento definido pela implementação.
Nome da análise de código: LEFTSHIFT_NEGATIVE_SIGNED_NUMBER
Exemplo
void leftshift(int shiftCount)
{
const auto result = -1 << shiftCount; // C26453 reported here
// code
}
Para corrigir esse aviso, use o seguinte código:
void leftshift(int shiftCount)
{
const auto result = ~0u << shiftCount; // OK
// code
}
Confira também
C26450
C26451
C26452
C26454
ES.101: Usar tipos não assinados para manipulação de bits
ES.102: usar tipos assinados para aritmética