Partager via


C6317

Avertissement C6317 : opérateur incorrect : l'opérateur NOT logique (!) n'est pas interchangeable avec l'opérateur de complément à 1 (~)

Cet avertissement indique qu'un opérateur NOT logique (!) est appliqué à une constante qui est probablement un indicateur de bits. Le résultat de l'opérateur NOT logique est Boolean ; il est incorrect d'appliquer une valeur Boolean à l'opérateur de bits AND (&). Utilisez l'opérateur de complément à 1 (~) pour retourner des indicateurs.

Exemple

Le code suivant génère cet avertissement :

#define FLAGS   0x4004

void f(int i)
{
  if (i & !FLAGS) // warning
  { 
    // code
  }
}

Pour corriger cet avertissement, utilisez le code suivant :

#define FLAGS   0x4004

void f(int i)
{
  if (i & ~FLAGS)
  {
    // code
  }
}

Voir aussi

Référence

Bitwise AND Operator: &

Logical Negation Operator: !

One's Complement Operator: ~