C6235
Avertissement C6235 : (<constante non nulle> || <expression>) est toujours une constante non nulle
Cet avertissement indique qu'une valeur de constante non nulle, autre que 1, a été détectée sur le côté gauche d'une opération logique OR qui se produit dans un contexte de test.Le côté droit de l'opération logique OR n'est pas évalué car l'expression obtenue a toujours la valeur True.C'est ce qu'on appelle une « évaluation de court-circuit ».
Une valeur de constante non nulle, autre que 1, suggère que l'opérateur de bits AND (&) aurait pu être utilisé.Cet avertissement n'est pas généré pour l'idiome commun lorsque la constante non nulle est égale à 1, en raison de son utilisation pour activer de manière sélective les chemins d'accès de code, mais il est généré si la constante non nulle est égale à 1, par exemple 1+0.
Exemple
Le code suivant génère cet avertissement car INPUT_TYPE a la valeur 2 :
#define INPUT_TYPE 2
void f(int n)
{
if(INPUT_TYPE || n) //warning 6235 issued
{
puts("Always gets here");
}
else
{
puts("Never gets here");
}
}
Le code suivant utilise l'opérateur de bits AND (&) pour corriger cet avertissement :
#define INPUT_TYPE 2
void f(int n)
{
if((INPUT_TYPE & n) == 2)
{
puts("bitwise-AND comparison true");
}
else
{
puts("bitwise-AND comparison false");
}
}