Compartilhar via


C6240

Aviso C6240: (<expression> & & < diferente de zero constante >) sempre avalia o resultado de <expression>. Você pretendia usar o operador bit a bit- e operador?

Este aviso indica que um valor constante de zero, diferente, foi detectado no lado direito de uma lógica- e a operação ocorre em um contexto de teste. Por exemplo, a expressão (n && 3) reduz a (!!n), que é o valor booleano de n.

Este aviso geralmente indica uma tentativa de verificar uma máscara de bits em que o bit a bit- E (&) deve ser usado. Não é gerado se a constante diferente de zero é avaliado como 1 por causa de seu uso para escolher seletivamente os caminhos de código.

Exemplo

O código a seguir gera este aviso:

#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 bitwise- E operador, conforme mostrado no código a seguir:

#include <stdio.h>
#define INPUT_TYPE 2

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

Consulte também

Referência

& Operador (referência de C#)