Compartir a través de


C6240

Actualización: noviembre 2007

C6240

Advertencia C6240: (<expresión> && <constante distinta de cero>) siempre evalúa el resultado de <expresión>. ¿Deseaba utilizar el operador de bit a bit AND?

Esta advertencia indica que un valor constante distinto de cero que no es uno se ha detectado en el lado derecho de una operación AND lógica que tiene lugar en un contexto de prueba. Por ejemplo, la expresión (n && 3) se reduce a (!!n), que es el valor booleano de n.

Esta advertencia suele indicar un intento de comprobación de una máscara de bits en que se debería utilizar el operador AND bit a bit (&). No se genera si la constante distinta de cero se evalúa como 1, debido a que se usa para la elección selectiva de rutas de acceso del código.

Ejemplo

El código siguiente genera esta advertencia:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if (n && INPUT_TYPE) 
   {
      puts("boolean value of !!n is true");
   }
   else
   {
      puts("boolean value of !!n is false");
   }
}

Para corregir esta advertencia, utilice el operador AND bit a bit como se muestra en el código siguiente:

#include <stdio.h>
#define INPUT_TYPE 2

void f(int n)
{
   if ( (n & INPUT_TYPE) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmak false");
   }
}

Vea también

Referencia

Operador & (Referencia de C#)