Compartir a través de


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

Vea también

Referencia

Expresiones con operadores binarios