Partager via


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");
   }
}

Voir aussi

Référence

Opérateurs logiques C