C6285
Advertencia C6285: (<constante distinta de cero>> || <<constante distinta de cero>) siempre es una constante distinta de cero.¿Deseaba utilizar el operador de bit a bit AND?
Esta advertencia indica que se han detectado dos valores constantes, ambos mayores que uno, como argumentos de una operación OR lógica que tiene lugar en un contexto de prueba.Esta expresión siempre es TRUE.
Los valores constantes mayores que uno sugieren que los argumentos de la operación OR lógica podrían ser campos de bits.Considere si un operador bit a bit podría ser operador más adecuado en este caso.
Ejemplo
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 ...
}
}