Freigeben über


Warnung C6317

Falscher Operator: Wahrheitsfrei (!) ist nicht austauschbar mit Durchlement (~)

Hinweise

Diese Warnung weist darauf hin, dass eine konstante nicht (!) auf eine Konstante angewendet wird, die wahrscheinlich ein Bit-Flag ist. Das Ergebnis der logischen Nicht-Logik ist boolescher Wert; Es ist falsch, den Bitweise- und (&) Operator auf einen booleschen Wert anzuwenden. Verwenden Sie zum Kippen von Flags den Operator "durch"-Komplement ().Use the ones-complement (~) operator to flip flags.

Codeanalysename: NOTNOTCOMPLEMENT

Beispiel

Der folgende Code generiert diese Warnung:

#define FLAGS   0x4004

void f(int i)
{
  if (i & !FLAGS) // warning
  {
    // code
  }
}

So korrigieren Sie die Warnung unter Verwendung des folgenden Codes

#define FLAGS   0x4004

void f(int i)
{
  if (i & ~FLAGS)
  {
    // code
  }
}

Siehe auch