Partager via


Avertissement du compilateur (niveau 1) C4807

'operation' : mélange risqué de type 'type' et champ de bits signé de type 'type'

Cet avertissement est généré lors de la comparaison d’un champ de bits signé à un bit avec une variable bool . Un champ de bits signé à un bit peut seulement contenir les valeurs -1 ou 0. Il est risqué de le comparer à bool. Aucun avertissement n’est généré sur la combinaison de bool et de champs de bits non signés à un bit, car ils sont identiques à bool et ne peuvent contenir que 0 ou 1.

Exemple

L’exemple suivant génère l’erreur 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;
   }
}