Compartilhar via


C6299

Aviso C6299: explicitamente comparar um campo de bit para um tipo Boolean produzirá resultados inesperados

Este aviso indica uma pressuposição incorreta booleanos e campos de bits são equivalentes.Atribuindo 1 para campos de bits colocará 1 no seu único bit; No entanto, qualquer comparação deste campo de bit 1 inclui uma conversão implícita do campo bit para um int. assinadoEssa conversão converterá o armazenado 1 -1 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 bits, como mostrado no código a seguir:

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