C6235

Actualización: noviembre 2007

C6235

Advertencia C6235: (<constante distinta de cero> || <expresión>) es siempre una constante distinta de cero

Esta advertencia indica que un valor constante distinto de cero que no es uno se ha detectado en el lado izquierdo de una operación OR lógica que tiene lugar en un contexto de prueba. El lado derecho de la operación lógica OR no se evalúa porque la expresión resultante siempre se evalúa en true. Esto se conoce como "evaluación cortocircuitada".

Un valor constante distinto de cero que no sea uno sugiere que es posible que la intención fuese utilizar el operador AND bit a bit (&). Esta advertencia no se genera para expresiones comunes en que la constante distinta de cero es 1, debido a su uso para la habilitación selectiva de rutas de acceso de código, pero sí se genera si la constante distinta de cero se evalúa en 1, por ejemplo, 1+0.

Ejemplo

El código siguiente genera esta advertencia porque INPUT_TYPE es 2:

#define INPUT_TYPE 2
void f(int n)
{
   if(INPUT_TYPE || n) //warning 6235 issued
   {
      puts("Always gets here");
   }
   else
   {
      puts("Never gets here");
   }
}

El código siguiente utiliza el operador AND (&) bit a bit para corregir esta advertencia:

#define INPUT_TYPE 2
void f(int n)
{
   if((INPUT_TYPE & n) == 2)
   {
      puts("bitwise-AND comparison true");
   }
   else
   {
      puts("bitwise-AND comparison false");
   }
}

Vea también

Referencia

C Logical Operators