Compartir a través de


C6317

Advertencia C6317: Operador incorrecto: logical-not (!) no se puede cambiar por ones-complement (~)

Esta advertencia indica que el operador NOT lógico (!) se aplica a una constante que es probable que sea un marcador de bits.El resultado del operador NOT lógico es booleano; es incorrecto aplicar el operador AND bit a bit (&) a un valor booleano.Utilice el operador ONES-COMPLEMENT (~) para voltear los marcadores.

Ejemplo

El código siguiente genera esta advertencia:

#define FLAGS   0x4004

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

Para corregir esta advertencia, utilice el código siguiente:

#define FLAGS   0x4004

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

Vea también

Referencia

Operador AND bit a bit: &

Operador lógico de negación: !

Operador de complemento de uno: ~