Avertissement C6240

('expression' && 'constante non nulle'') évalue toujours le résultat de 'expression'. Avez-vous l’intention d’utiliser l’opérateur au niveau du bit ?

Cet avertissement indique qu’une valeur constante autre que zéro a été détectée sur le côté droit d’une opération logique et qui se produit dans un contexte de test. Par exemple, l’expression (n && 3) est réduite à (!!n), qui est la valeur booléenne de n.

Notes

Cet avertissement indique généralement une tentative d’case activée un masque de bits dans lequel l’opérateur BITwise-AND (&) doit être utilisé. Elle n’est pas générée si la constante non nulle prend la valeur 1 en raison de son utilisation pour choisir de manière sélective les chemins de code.

Nom de l’analyse du code : LOGICALANDNONZERO

Exemple

Le code suivant génère cet avertissement :

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if (n && INPUT_TYPE)
   {
      puts("boolean value of !!n is true");
   }
   else
   {
      puts("boolean value of !!n is false");
   }
}

Pour corriger cet avertissement, utilisez l’opérateur BITwise-AND comme indiqué dans le code suivant :

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if ( (n & INPUT_TYPE) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmask false");
   }
}

Voir aussi

& (opérateur)