Freigeben über


C6317

Warnung C6317: Falscher Operator: Der logische Operator NOT (!) ist nicht mit dem Operator Einerkomplement (~) auswechselbar.

Diese Warnung gibt an, dass ein logischer Operator NOT (!) auf eine Konstante angewendet wird, bei der es sich wahrscheinlich um ein Bitflag handelt. Das Ergebnis der logischen NOT-Operation ist ein boolescher Wert. Der bitweise Operator AND (&) darf nicht auf einen booleschen Wert angewendet werden. Verwenden Sie den Operator Einerkomplement (~), um Bitwerte umzukehren.

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

Referenz

Bitwise AND Operator: &

Logical Negation Operator: !

One's Complement Operator: ~