C6285
Aviso C6285: (<constante não nula> || <constante não nula>) é sempre uma constante não nula.Sua intenção era utilizar o operador e bit-a-bit?
Esse aviso indicar que dois valores constantes, ambos maior que um, foram detectados como argumentos para a realização ou a operação que ocorrem em um contexto de teste.Essa expressão sempre é TRUE.
Os valores maiores constantes de um sugerem que os argumentos a realização ou poderiam ser campos de bit.Considere se um operador bit a bit pode ser um operador mais apropriado nesse caso.
Exemplo
O código a seguir gera este aviso:
#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 ...
}
}
Para corrigir esse aviso, use o seguinte código:
#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 ...
}
}