Freigeben über


C6317

C6317

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

Diese Warnung gibt an, dass ein logischer NOT-Operator (!) 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 AND-Operator (&) darf nicht auf einen booleschen Wert angewendet werden. Verwenden Sie den Einerkomplement-Operator (~), 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: ~