C6285
Предупреждение C6285: (<ненулевая константа> || <ненулевая константа>) всегда является ненулевой константой. Предполагалось использовать оператор побитового И?
Данное предупреждение указывает, что в качестве аргументов операции логического ИЛИ, используемой в контексте проверки, обнаружены две константы больше единицы. Такое выражение всегда возвращает значение TRUE.
Константные значения, превышающие единицу, в качестве аргументов операции логического ИЛИ могут быть битовыми полями. Проверьте, не является ли более правильным использовать в подобной ситуации побитовый оператор "&".
Пример
Данное предупреждение создается в следующем коде:
#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...
}
}
Для устранения этого предупреждения используйте оператор побитового И (&), как указано в следующем коде:
#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...
}
}