Partilhar via


C6236

Aviso C6236: (<expressão>|| < constante diferente de zero >) é sempre uma constante diferente de zero

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

Um valor constante diferente sugere que o bit a bit- E operador (&) ter sido destinado. Este aviso não é gerado para o idioma comum quando 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, n ++ não será avaliado como INPUT_TYPE é maior que 1:

#define INPUT_TYPE 2
#include <stdio.h>

void f( int n )
{
   // side effect: n not incremented
   if( n++ || INPUT_TYPE ) //warning 6236 issued
   {
      puts( "Always gets here" );
   }
   else
   {
      puts( "Never enters here" );
   }
}

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

#define INPUT_TYPE 2
#include <stdio.h>

void f( int n )
{
   if( n++ & INPUT_TYPE )
   {
      puts( "Bitwise-AND comparison is true" );
   }
   else
   {
      puts( "Bitwise-AND comparison is false" );
   }
}

Consulte também

Referência

& Operador (Referência C#)