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 & in diesem Fall möglicherweise besser geeignet 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...
}
}
Um diese Warnung zu korrigieren, verwenden Sie den bitweisen Operator AND (&), wie im folgenden Code gezeigt:
#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...
}
}