C6285
Warnung C6285: (<Konstante ungleich 0> || <Konstante ungleich 0>) ist immer eine Konstante ungleich 0.Wollten Sie den bitweisen Operator AND verwenden?
Diese Warnung gibt an, dass zwei konstante Werte, die beide größer als 1 sind, als Argumente einer logischen OR-Operation in einem Testkontext erkannt wurden.Dieser Ausdruck hat immer den Wert TRUE.
Konstante Werte, die größer als 1 sind, lassen den Schluss zu, dass die Argumente für die logische OR-Operation möglicherweise Bitfelder sind.Prüfen Sie, ob der bitweise Operator AND einen aussagekräftigen Operator in diesem Fall ist.
Beispiel
Der folgende Code generiert diese Warnung:
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f()
{
if (TESTED_VALUE || MASK)
{
puts("(TESTED_VALUE || MASK) True");
// code ...
}
else
{
puts("(TESTED_VALUE || MASK) False");
// code ...
}
}
So korrigieren Sie die Warnung unter Verwendung des folgenden Codes
#include <stdio.h>
#define TESTED_VALUE 0x37
#define MASK 0xaa
void f(int flag)
{
if ((TESTED_VALUE & MASK)== flag)
{
puts("true");
// code ...
}
else
{
puts("false");
// code ...
}
}