Compartilhar via


C6299

aviso C6299: Comparar explicitamente um campo de bits para um tipo booleano renderá resultados inesperados

Esse aviso indicar uma suposição incorreta que Boolianos e os campos de bit são equivalentes.Alocando 1 para campos de 1 bits colocará em seu único bit; entretanto, qualquer comparação desse campo de bit a 1 inclui uma conversão implícita do campo de bit a um inteiro assinado.Isso converte converterá o 1 à-1 armazenado e a comparação pode produzir resultados inesperados.

Exemplo

O código a seguir gera este aviso:

struct myBits
{
  short flag : 1;
  short done : 1;
  //other members
} bitType;

void f( )
{
  if (bitType.flag == 1) 
  {
  // code...
  }
}

Para corrigir esse aviso, use um campo de bit conforme mostrado no seguinte código:

void f ()
{
  if(bitType.flag==bitType.done)
  {
    // code...
  }
}