Udostępnij za pośrednictwem


C6313

Ostrzeżenie C6313: nieprawidłowy operator: flaga o wartości zerowej nie może być badana, przy użyciu bitowego operatora and.Sprawdź czy istnieją flagi o zerowej wartości, za pomocą testu równości

To ostrzeżenie wskazuje, że dostarczono stałą wartość równą zero, jako argument bitowego operatora and (&) w kontekście testu.Wyrażenie będące wynikiem jest stałą i jest obliczane do wartości false; wynik jest inny niż zamierzony.

Jest to zazwyczaj spowodowane użyciem bitowego operatora and w celu testowania flagi, która ma wartość równą zero.Aby przetestować flagi o wartości zerowej, musi być wykonywany test równości, na przykład można użyć == lub !=.

Przykład

Poniższy kod generuje to ostrzeżenie:

#define FLAG 0

void f(int Flags )
{
  if (Flags & FLAG)
  {
    // code
  }
}

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

#define FLAG 0

void f(int Flags )
{
  if (Flags == FLAG)
  {
    // code
  }
}