Warnung C6285
('Nicht-Nullkonstante' || 'Nicht-Nullkonstante') ist immer eine Konstante ungleich Null. Wollten Sie den bitweisen Operator AND verwenden?
Diese Warnung gibt an, dass zwei Konstantenwerte, die beide größer als eine sind, als Argumente für einen logischen Oder Vorgang erkannt wurden, der in einem Testkontext auftritt. Dieser Ausdruck ist immer TRUE.
Hinweise
Konstantenwerte, die größer als eins sind, deuten darauf hin, dass die Argumente zu logischen oder bitbasierten Feldern gehören. Überlegen Sie, ob ein bitweiser Operator in diesem Fall ein geeigneterer Operator sein könnte.
Codeanalysename: LOGICALOROFCONSTANTS
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 ...
}
}