C6239
Aviso C6239: (< constante diferente de zero > && <expressão>) sempre avalia o resultado da <expressão>.Você pretendia usar o operador bit a bit-operador e?
Este aviso indica que um não - zero valor constante, seja um, foi detectado no lado esquerdo de uma lógica - E operação ocorre em um contexto de teste.Por exemplo, a expressão ( 2 && n ) é reduzido para (!! n), which is the Boolean value of n.
Este aviso geralmente indica uma tentativa de 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 bit a bit- E (&) operador sistema autônomo mostra o 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");
}
}