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...
}
}