C6316
Warnung C6316: Falscher Operator: Der getestete Ausdruck ist konstant und ungleich 0 (null). Verwenden Sie den bitweisen Operator AND, um zu ermitteln, ob Bits festgelegt sind.
Diese Warnung gibt die Verwendung des bitweisen OR (|) an, wenn bitweises AND (&) 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
}
}