Avertissement C6235

('constante non nulle' || 'expression') est toujours une constante non nulle

Cet avertissement indique qu’une valeur constante autre que zéro a été détectée sur le côté gauche d’une opération logique ou qui se produit dans un contexte de test. Le côté droit de l’opération logique n’est pas évalué, car l’expression résultante prend toujours la valeur true. Cette fonctionnalité de langage est appelée « évaluation en court-circuit ».

Notes

Une valeur constante non nulle, autre qu’une valeur, suggère que l’opérateur BITwise-AND (&) a pu être prévu. Cet avertissement n’est pas généré pour l’idiome commun lorsque la constante non nulle est 1, en raison de son utilisation pour activer sélectivement les chemins de code. Toutefois, elle est générée si la constante non nulle prend la valeur 1, par exemple 1+0.

Nom de l’analyse du code : NONZEROLOGICALOR

Exemple

Le code suivant génère cet avertissement, car INPUT_TYPE il s’agit de 2 :

#define INPUT_TYPE 2
void f(int n)
{
   if(INPUT_TYPE || n) //warning C6235 issued
   {
      puts("Always gets here");
   }
   else
   {
      puts("Never gets here");
   }
}

Le code suivant utilise l’opérateur BITwise-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

Opérateurs logiques C