Avertissement C6317

Opérateur incorrect : non logique ( !) n’est pas interchangeable avec un complément (~)

Notes

Cet avertissement indique qu’un non logique (!) est appliqué à une constante susceptible d’être un indicateur de bits. Le résultat de non logique n’est pas booléen ; Il est incorrect d’appliquer l’opérateur au niveau du bit et (&) à une valeur booléenne. Utilisez l’opérateur ones-complement (~) pour retourner des indicateurs.

Nom de l’analyse du code : NOTNOTCOMPLEMENT

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