C6235
Mise à jour : novembre 2007
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");
}
}