C6317
Ostrzeżenie C6317: nieprawidłowy operator: logiczne not (!) nie jest wymienne z nich uzupełnienia (~)
To ostrzeżenie wskazuje, że logiczne not (!) jest stosowany do stała, która prawdopodobnie będzie flagą bitową.Wynik logiczny nie jest logiczną; niepoprawny może stosować operatory- i (&) operator wartość logiczna.Dopełnienie z nich korzystać (~) operator, aby przerzucić flagi.
Przykład
Poniższy kod generuje ostrzeżenie to:
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
Aby poprawić to ostrzeżenie, należy użyć następującego kodu:
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}