C6285

Avertissement C6285 : (<constante non nulle> || <constante non nulle>) est toujours une constante non nulle.Souhaitiez-vous utiliser l'opérateur de bits AND ?

Cet avertissement indique que deux valeurs de constante supérieures à 1, ont été détectées comme arguments dans une opération logique OR qui se produit dans un contexte de test.Cette expression a toujours la valeur TRUE.

Les valeurs de constante supérieures à 1 suggèrent que les arguments de l'opérateur logique OR peuvent être des champs de bits.Déterminez si un opérateur de bits peut être un opérateur plus approprié dans ce cas.

Exemple

Le code suivant génère cet avertissement :

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f()
{
  if (TESTED_VALUE || MASK) 
  {
    puts("(TESTED_VALUE || MASK) True");
    // code ...
  }
  else 
  {
    puts("(TESTED_VALUE || MASK) False");
    // code ...
  }
}

Pour corriger cet avertissement, utilisez le code suivant :

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f(int flag)
{
  if ((TESTED_VALUE & MASK)== flag)
  {
    puts("true");
    // code ...
  }
  else
  {
    puts("false");
    // code ...
  }
}

Voir aussi

Référence

Expressions avec les opérateurs binaires