C6285
Ostrzeżenie C6285: (<non-zero constant> || <non-zero constant>) jest zawsze stałą niezerową.Czy zamierzasz korzystać z operatora bitowego and?
To ostrzeżenie wskazuje, że dwie wartości stałych, zarówno więcej niż jeden, zostały wykryte jako argumenty funkcji logicznych- lub operację wykonywaną w kontekście badania.Wyrażenie to jest zawsze PRAWDZIWE.
Stała wartości większej niż jeden sugerują, że argument funkcji logicznych- lub może być pól bitowych.Należy rozważyć, czy bitowe operator może być bardziej odpowiedni operator w tym przypadku.
Przykład
Poniższy kod generuje to ostrzeżenie:
#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 ...
}
}
Aby poprawić to ostrzeżenie, należy użyć następującego kodu:
#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 ...
}
}