Udostępnij za pośrednictwem


C6316

Ostrzeżenie C6316: nieprawidłowy operator: wyrażenie badane jest stała i od zera.Użyj bitowe- oraz w celu ustalenia, czy bity są ustawione.

To ostrzeżenie wskazuje użycie bitowe- lub ()|) gdy operatory- i (&) powinny używane.Bitowe- lub dodaje bitów wyrażenie będące wynikiem, należy operatory- i wybiera tylko bity wspólnych między jego dwóch operatorów.Testuje dla flagi musi być przeprowadzone przy bitowe-i test równości.

Przykład

Poniższy kod generuje ostrzeżenie to:

#define INPUT_VALUE 2
void f( int Flags)
{
  if (Flags | INPUT_VALUE) // warning
  {
    // code
  }
}

Aby poprawić to ostrzeżenie, należy użyć następującego kodu:

#define ALLOWED 1
#define INPUT_VALUE 2

void f( int Flags)
{
  if ((Flags & INPUT_VALUE) == ALLOWED)
  {
    // code
  }
}