Compartilhar via


C6317

Aviso C6317: operador incorreto: não lógico-(!) não é intercambiável com aqueles complemento (~)

Este aviso indica que um não-lógico (!) está sendo aplicada a uma constante que provavelmente será um sinalizador de bit.O resultado do lógico não é booleano; ele está incorreto para aplicar o operador bit a bit- e (&) operador para um valor booleano.Usar o complemento aqueles (~) o operador para inverter os sinalizadores.

Exemplo

O código a seguir gera este aviso:

#define FLAGS   0x4004

void f(int i)
{
  if (i & !FLAGS) // warning
  { 
    // code
  }
}

Para corrigir esse aviso, use o código a seguir:

#define FLAGS   0x4004

void f(int i)
{
  if (i & ~FLAGS)
  {
    // code
  }
}

Consulte também

Referência

Operador AND bit a bit: &

Operador de negação lógica:!

Um do operador do complemento: ~