C6235C6235

avertissement C6235 : (<constante non nulle > | | <expression >) est toujours une constante non nullewarning C6235: (<non-zero constant> || <expression>) is always a non-zero constant

Cet avertissement indique qu’une valeur de constante non nulle, autre que 1, a été détectée sur le côté gauche d’un opérateur logique- ou une opération qui se produit dans un contexte de test.This warning indicates that a non-zero constant value, other than one, was detected on the left side of a logical-or operation that occurs in a test context. Le côté droit de la logique- ou de l’opération n’est pas évaluée, car l’expression obtenue toujours a la valeur true.The right side of the logical-or operation is not evaluated because the resulting expression always evaluates to true. Cela est appelé « évaluation de court-circuit ».This is referred to as "short-circuit evaluation."

Une valeur de constante non nulle, autre que 1, suggère que l’opérateur de bits- et opérateur (&) peuvent avoir été conçus.A non-zero constant value, other than one, suggests that the bitwise-AND operator (&) may have been intended. 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 de manière sélective les chemins de code, mais il est généré si la constante non nulle est égale à 1, par exemple 1 + 0.This warning is not generated for the common idiom when the non-zero constant is 1, because of its use for selectively enabling code paths, but it is generated if the non-zero constant evaluates to 1, for example 1+0.

ExempleExample

Le code suivant génère cet avertissement car INPUT_TYPE est 2 :The following code generates this warning because INPUT_TYPE is 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- et (&) (opérateur) pour corriger cet avertissement :The following code uses the bitwise-AND (&) operator to correct this warning:

#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 aussiSee Also

Opérateurs logiques CC Logical Operators