C6317
Aktualisiert: November 2007
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
}
}