C6316

Avertissement C6316 : opérateur incorrect : l'expression testée est constante et non nulle.Utiliser l'opérateur de bits AND pour déterminer si les bits sont définis

Cet avertissement indique l'utilisation de l'opérateur de bits OR (|) alors que l'opérateur de bits AND (&) aurait dû être utilisé.L'opérateur de bits OR ajoute des bits à l'expression obtenue, alors que l'opérateur de bits AND sélectionne uniquement les bits en commun entre ses deux opérateurs.Les tests pour les indicateurs doivent être exécutés avec l'opérateur de bits AND ou à l'aide d'un test d'égalité.

Exemple

Le code suivant génère cet avertissement :

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

Pour corriger cet avertissement, utilisez le code suivant :

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}