C6313
Aviso C6313: Operador incorreto: Sinalizador com valor zero não pode ser testados com o bit a bit- e. Usar um teste de igualdade para verificar se há sinalizadores com valor zero
Este aviso indica que um valor constante de zero foi fornecido como um argumento para o bit a bit- e (&) o operador em um contexto de teste. A expressão resultante é constante e avaliada como false; o resultado é diferente da pretendida.
Isso geralmente é causado por meio de bit a bit- e para testar um sinalizador que possui o valor zero. Para testar os sinalizadores com valor zero, um teste de igualdade deve ser realizada, por exemplo, usando == ou !=.
Exemplo
O código a seguir gera este aviso:
#define FLAG 0
void f(int Flags )
{
if (Flags & FLAG)
{
// code
}
}
Para corrigir esse aviso, use o seguinte código:
#define FLAG 0
void f(int Flags )
{
if (Flags == FLAG)
{
// code
}
}