Partager via


C6285

Mise à jour : novembre 2007

C6285

Avertissement C6285 : (<constant non nulle> || <constant 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. Si possible, déterminez si un opérateur de bits, &, convient mieux 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 l'opérateur de bits AND (&), comme indiqué dans 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

Bitwise AND Operator: &

Logical OR Operator: ||

Avertissement du compilateur (niveau 4) C4127