C6317
upozornění C6317: nesprávná operátor: Logická negace (!) není zaměnitelné s ty doplněk (~)
Toto upozornění znamená, že logické ne (!) se uplatňuje na konstantu, která by mohla být příznak bit.Logické ne výsledkem je logická hodnota; je nesprávné použití bitové- a (&) operátor booleovskou hodnotu.Použít jako doplněk (~) operátor překlopit příznaky.
Příklad
Následující kód vygeneruje toto upozornění:
#define FLAGS 0x4004
void f(int i)
{
if (i & !FLAGS) // warning
{
// code
}
}
Chcete-li opravit toto upozornění, použijte následující kód:
#define FLAGS 0x4004
void f(int i)
{
if (i & ~FLAGS)
{
// code
}
}