C6297
aviso C6297: Estouro aritmético: o valor de 32 bits é deslocado e então convertido para um valor de 64 bits.O resultado não pode ser um valor esperado
Esse aviso indica o comportamento incorreto que os resultados da promoção integrante de regras e digite maior do que aquelas em aritmética que é executada normalmente.
Nesse caso, um valor de 32 bits foi deslocamento à esquerda, e o resultado dessa turno foi convertido em um valor de 64 bits.Se o turno estourou o valor de 32 bits, os bits são perdidos.
Se você não deseja perder bit, converta o valor a ser compensado a uma quantidade de 64 bits antes de ser deslocada.Se você deseja perder os bits, executar a conversão apropriada ao longo não assinados ou um tipo curto, ou mascare o resultado do turno eliminarão esse aviso e retornarão a tentativa de código mais espaço livre.
Exemplo
O código a seguir gera este aviso:
void f(int i)
{
unsigned __int64 x;
x = i << 34;
// code
}
Para corrigir esse aviso, use o seguinte código:
void f(int i)
{
unsigned __int64 x;
// code
x = ((unsigned __int64)i) << 34;
}