Compartilhar via


C6239

Aviso C6239: (< diferente de zero constante > & & <expression>) sempre retorna o resultado de <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 esquerdo de uma lógica- E operação que ocorre em um contexto de teste.Por exemplo, a expressão ( 2 && n ) é reduzido para (!!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 (&) operador deve ser usado e 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(INPUT_TYPE && n) // warning 6239
   {
      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( ( INPUT_TYPE & n ) )
   {
      puts("bitmask true");
   }
   else
   {
      puts("bitmask false");
   }
}

Consulte também

Referência

& Operador (referência de C#)