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.Si possible, déterminez si un opérateur de bit 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 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 ...
}
}