Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Bitový operátor: &

Logický operátor negace:!

Jeden jeho doplňkem operátor: ~