Freigeben über


C6313

Warnung C6313: Falscher Operator: Ein Flag mit dem Wert 0 (null) kann nicht mit dem bitweisen Operator AND getestet werden.Verwenden Sie einen Übereinstimmungstest, um eine Überprüfung auf Flags mit dem Wert 0 durchzuführen.

Diese Warnung weist darauf hin, dass in einem Testkontext ein konstanter Wert von 0 (null) als Argument für den bitweise Operator AND (&) angegeben wurde.Der sich daraus ergebende Ausdruck ist konstant und wird zum Ergebnis false ausgewertet; das Ergebnis ist anders als beabsichtigt.

Dies wird i. d. R. bei Verwendung eines bitweisen Operators AND zum Testen eines Flags mit dem Wert 0 (null) verursacht.Um Flags mit dem Wert 0 (null) zu testen, muss ein Übereinstimmungstest ausgeführt werden, z. B. mit == oder !=.

Beispiel

Der folgende Code generiert diese Warnung:

#define FLAG 0

void f(int Flags )
{
  if (Flags & FLAG)
  {
    // code
  }
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#define FLAG 0

void f(int Flags )
{
  if (Flags == FLAG)
  {
    // code
  }
}