C6240C6240

Advertencia C6240: (<expresión > & & <constante distinta de cero >) siempre evalúa el resultado de <expresión >.warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. ¿Deseaba utilizar bit a bit- y el operador?Did you intend to use the bitwise-and operator?

Esta advertencia indica que se detectó un valor constante distinto de cero, que no es uno, en el lado derecho de un valor lógico: y la operación que se produce en un contexto de prueba.This warning indicates that a non-zero constant value, other than one, was detected on the right side of a logical-and operation that occurs in a test context. Por ejemplo, la expresión (n && 3) reduce a (!!n), que es el valor booleano de n.For example, the expression (n && 3) reduces to (!!n), which is the Boolean value of n.

Esta advertencia suele indicar un intento de comprobación de una máscara de bits en el que el bit a bit- y (&) se debe usar el operador.This warning typically indicates an attempt to check a bit mask in which the bitwise-AND (&) operator should be used. No se genera si la constante distinta de cero se evalúa como 1 debido a su uso para elegir de forma selectiva las rutas de código.It is not generated if the non-zero constant evaluates to 1 because of its use for selectively choosing code paths.

EjemploExample

El código siguiente genera esta advertencia:The following code generates this warning:

#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 bit a bit- y operador tal como se muestra en el código siguiente:To correct this warning, use bitwise-AND operator as shown in the following code:

#include <stdio.h>
#define INPUT_TYPE 2

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

Vea tambiénSee Also

Operador && Operator