Freigeben über


C6285

Warnung C6285: (<Konstante ungleich 0> || <Konstante ungleich 0>) ist immer eine Konstante ungleich 0.Wollten Sie den bitweisen Operator AND verwenden?

Diese Warnung gibt an, dass zwei konstante Werte, die beide größer als 1 sind, als Argumente einer logischen OR-Operation in einem Testkontext erkannt wurden.Dieser Ausdruck hat immer den Wert TRUE.

Konstante Werte, die größer als 1 sind, lassen den Schluss zu, dass die Argumente für die logische OR-Operation möglicherweise Bitfelder sind.Prüfen Sie, ob der bitweise Operator AND einen aussagekräftigen Operator in diesem Fall ist.

Beispiel

Der folgende Code generiert diese Warnung:

#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 ...
  }
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#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 ...
  }
}

Siehe auch

Referenz

Ausdrücke mit binären Operatoren