Partager via


C6239

Avertissement C6239 : (<constante non nulle> && <expression>) correspond toujours au résultat de <expression>. Souhaitiez-vous utiliser l'opérateur de bits AND ?

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 AND qui se produit dans un contexte de test. Par exemple, l'expression ( 2 && n ) est réduite à (!!n), qui est la valeur booléenne de n.

Cet avertissement indique généralement une tentative de vérification d'un masque de bits dans lequel l'opérateur de bits AND (&) doit être utilisé, et n'est pas généré si la constante non nulle est égale à 1 car il est utilisé pour choisir de manière sélective des chemins d'accès de code.

Exemple

Le code suivant génère cet avertissement :

#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
   if(INPUT_TYPE && n) // warning 6239
   {
      puts("boolean value of n is true");
   }
   else
   {
      puts("boolean value of n is false");
   }
}

Pour corriger cet avertissement, utilisez l'opérateur de bits AND (&), comme indiqué dans le code suivant :

#include <stdio.h>
#define INPUT_TYPE 2
void f( int n )
{
   if( ( INPUT_TYPE & n ) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmask false");
   }
}

Voir aussi

Référence

&, opérateur (référence C#)