Compartilhar via


C6316

Aviso C6316: Operador incorreto: testada a expressão é constante e diferente de zero. Bit a bit de uso- e para determinar se os bits forem definidos

Este aviso indica o uso de bit a bit- ou (|) ao bit a bit- e (&) deve ter sido usado. Bit a bit- ou adiciona bits para a expressão resultante, enquanto o bit a bit- e seleciona somente esses bits em comum entre os dois operadores. Testa a sinalizadores devem ser realizadas com desvio-e ou um teste de igualdade.

Exemplo

O código a seguir gera este aviso:

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

Para corrigir esse aviso, use o seguinte código:

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}