C6316
Aktualisiert: November 2007
C6316
Warnung C6316: Falscher Operator: Der getestete Ausdruck ist konstant und ungleich 0 (null). Verwenden Sie den bitweisen AND-Operator, um zu ermitteln, ob Bits festgelegt sind.
Diese Warnung gibt an, dass der bitweise OR-Operator (|) verwendet wird, obwohl der bitweise AND-Operator (&) verwendet werden sollte. Bei der bitweisen OR-Operation werden dem sich ergebenden Ausdruck Bits hinzugefügt, wohingegen bei der bitweisen AND-Operation nur die Bits ausgewählt werden, die beide Operatoren aufweisen. Bei bitweisen AND-Operationen müssen Tests auf Flags oder ein Übereinstimmungstest durchgeführt werden.
Beispiel
Der folgende Code generiert diese Warnung:
#define INPUT_VALUE 2
void f( int Flags)
{
if (Flags | INPUT_VALUE) // warning
{
// code
}
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#define ALLOWED 1
#define INPUT_VALUE 2
void f( int Flags)
{
if ((Flags & INPUT_VALUE) == ALLOWED)
{
// code
}
}