C6240C6240

Aviso C6240: (<expressão > & & <constante não-nula >) sempre avalia o resultado de <expressão >.warning C6240: (<expression> && <non-zero constant>) always evaluates to the result of <expression>. Você pretendia usar bit a bit- e operador?Did you intend to use the bitwise-and operator?

Esse aviso indica que um valor de constante diferente de zero, diferente, foi detectado no lado direito de uma lógica- e operação que ocorre em um contexto de teste.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 exemplo, a expressão (n && 3) reduz a (!!n), que é o valor booliano de n.For example, the expression (n && 3) reduces to (!!n), which is the Boolean value of n.

Esse aviso geralmente indica uma tentativa de verificar uma máscara de bits em que o bit a bit- e (&) operador deve ser usado.This warning typically indicates an attempt to check a bit mask in which the bitwise-AND (&) operator should be used. Ele não será gerado se a constante diferente de zero é avaliada como 1 por causa do seu uso para escolher seletivamente os caminhos de código.It is not generated if the non-zero constant evaluates to 1 because of its use for selectively choosing code paths.

ExemploExample

O código a seguir gera este aviso: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 corrigir esse aviso, use bit a bit- e operador conforme mostrado no código a seguir: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");
   }
}

Consulte tambémSee Also

Operador && Operator