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 contagem de deslocamento à esquerda é negativa ou maior ou igual ao tamanho do operando, que é um comportamento indefinido (io.3)
Comentários
Esse aviso indica que a contagem de deslocamento é negativa ou maior ou igual ao número de bits no operando deslocado. Ambos os casos resultam em comportamento indefinido.
O aviso C4293 é uma verificação semelhante no compilador do Microsoft C++.
Nome da análise de código: SHIFT_COUNT_NEGATIVE_OR_TOO_BIG
Exemplo
unsigned long long combine(unsigned lo, unsigned hi)
{
return (hi << 32) | lo; // C26252 here
}
Para corrigir esse aviso, use o seguinte código:
unsigned long long combine(unsigned lo, unsigned hi)
{
return (static_cast<unsigned __int64>(hi) << 32) | lo; // OK
}
Confira também
C26450
C26451
C26453
C26454
ES.101: Usar tipos não assinados para manipulação de bits
ES.102: usar tipos assinados para aritmética