Advertencia C6285
('constante no cero' || 'constante no cero') siempre es una constante distinta de cero. ¿Tenía previsto usar el operador AND bit a bit?
Esta advertencia indica que se detectaron dos valores de constante, ambos mayores que uno, como argumentos para una operación lógica o que se produce en un contexto de prueba. Esta expresión siempre es TRUE.
Los valores de constante mayores que uno sugieren que los argumentos para el operador OR lógico podrían ser campos de bits. Considere si un operador bit a bit podría ser un operador más adecuado en este caso.
Nombre de análisis de código: LOGICALOROFCONSTANTS
El código siguiente genera esta advertencia:
#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 corregir esta advertencia, utilice el código siguiente:
#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 ...
}
}