Freigeben über


C6316

C6316

Warnung C6316: Falscher Operator: Der getestete Ausdruck ist konstant und ungleich 0 (null). Verwenden Sie den bitweisen AND-Operator, um zu ermitteln, ob Bits festgelegt sind.

Diese Warnung gibt an, dass der bitweise OR-Operator (|) verwendet wird, obwohl der bitweise AND-Operator (&) verwendet werden sollte. Bei der bitweisen OR-Operation werden dem sich ergebenden Ausdruck Bits hinzugefügt, wohingegen bei der bitweisen AND-Operation nur die Bits ausgewählt werden, die beide Operatoren aufweisen. Bei bitweisen AND-Operationen müssen Tests auf Flags oder ein Übereinstimmungstest durchgeführt werden.

Beispiel

Der folgende Code generiert diese Warnung:

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}