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