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.

Comentarios

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 del análisis de código: LOGICALOROFCONSTANTS

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 ...
  }
}

Consulte también

Expresiones con operadores binarios