Avertissement C6285

('constante non nulle' || 'constante non nulle'') est toujours une constante non nulle. Avez-vous l’intention d’utiliser l’opérateur au niveau du bit ?

Cet avertissement indique que deux valeurs constantes, supérieures à une, ont été détectées en tant qu’arguments pour une opération logique ou qui se produit dans un contexte de test. Cette expression est toujours TRUE.

Notes

Les valeurs constantes supérieures à une suggèrent que les arguments à des champs logiques ou peuvent être des champs de bits. Déterminez si un opérateur au niveau du bit peut être un opérateur plus approprié dans ce cas.

Nom de l’analyse du code : LOGICALOROFCONSTANTS

Exemple

Le code suivant génère cet avertissement :

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f()
{
  if (TESTED_VALUE || MASK)
  {
    puts("(TESTED_VALUE || MASK) True");
    // code ...
  }
  else
  {
    puts("(TESTED_VALUE || MASK) False");
    // code ...
  }
}

Pour corriger cet avertissement, utilisez le code suivant :

#include <stdio.h>
#define     TESTED_VALUE    0x37
#define     MASK            0xaa

void f(int flag)
{
  if ((TESTED_VALUE & MASK)== flag)
  {
    puts("true");
    // code ...
  }
  else
  {
    puts("false");
    // code ...
  }
}

Voir aussi

Expressions avec opérateurs binaires