Compartilhar via


Aviso do compilador (nível 1) C4807

'operation' : combinação não segura do tipo 'type' e do campo de bits assinado do tipo 'type'

Esse aviso é gerado ao comparar um campo de bits assinado de um bit a uma variável bool. Como um campo de bits assinado de um bit só pode conter os valores -1 ou 0, é perigoso compará-lo a bool. Nenhum aviso é gerado sobre combinar bool e campos de bits de um bit não assinados, pois eles são idênticos a bool e só podem conter 0 ou 1.

Exemplo

A amostra a seguir gera C4807:

// C4807.cpp
// compile with: /W1
typedef struct bitfield {
   signed mybit : 1;
} mybitfield;

int main() {
   mybitfield bf;
   bool b = true;

   // try..
   // int b = true;

   bf.mybit = -1;
   if (b == bf.mybit) {   // C4807
      b = false;
   }
}