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");
}
}