C6240
Aviso C6240: (<expression> & & < constante diferente de zero >) sempre avalia o resultado da <expression>.Você pretendia usar o operador bit a bit- e operador?
Este aviso indica que um valor constante diferente de zero, diferente de um, 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 para verificar se uma máscara de bits em que o bit a bit- E (&) deve ser usado um operador.Ele não é gerado se a constante diferente de zero é avaliado como 1 por causa de seu uso por 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");
}
}