C6285
Actualización: noviembre 2007
C6285
Advertencia C6285: (<constante distinta de cero> || <constante distinta de cero>) es siempre 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 podría ser más adecuado en este caso utilizar un operador bit a bit, &.
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 operador AND bit a bit (&) como se muestra en 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...
}
}