C6235

Aviso C6235: (< diferente de zero constante > || <expression>) é sempre uma constante diferente de zero

Este aviso indica que um valor constante de zero, diferente, foi detectado no lado esquerdo de uma lógica- ou operação ocorre em um contexto de teste. O lado direito da lógica- ou operação não será avaliada porque a expressão resultante sempre avaliada como true. Isso é conhecido como "avaliação de circuito curto."

Um valor constante de zero, diferente, sugere que o bit a bit- E operador (&) podem ter sido pretendido. Este aviso não é gerado para o idioma comum quando a constante diferente de zero é 1, por causa de seu uso para habilitar seletivamente os caminhos de código, mas ele é gerado se a constante diferente de zero é avaliado como 1, por exemplo 1 + 0.

Exemplo

O código a seguir gera este aviso porque INPUT_TYPE é 2:

#define INPUT_TYPE 2
void f(int n)
{
   if(INPUT_TYPE || n) //warning 6235 issued
   {
      puts("Always gets here");
   }
   else
   {
      puts("Never gets here");
   }
}

O código a seguir usa o bit a bit- E (&) o operador para corrigir este aviso:

#define INPUT_TYPE 2
void f(int n)
{
   if((INPUT_TYPE & n) == 2)
   {
      puts("bitwise-AND comparison true");
   }
   else
   {
      puts("bitwise-AND comparison false");
   }
}

Consulte também

Referência

C Logical Operators