C6317
Actualización: noviembre 2007
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 indicador 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 indicadores.
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
}
}