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
}
}