Udostępnij za pośrednictwem


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

Zobacz też

Informacje

Bitowe operatora AND: &

Operator logiczny Negacja:!

Przez jeden Operator uzupełnienie: ~