C6313
advertencia C6313: Operador incorrecto: no se puede probar el marcador con valor cero con el operador AND bit a bit.Utilice una prueba de igualdad para comprobar los marcadores con valor cero
Esta advertencia indica que se proporcionó un valor de constante de cero como argumento para el operador AND bit a bit (&) en un contexto de prueba.La expresión resultante es constante y se evalúa en false; el resultado es distinto de lo esperado.
Esto suele ser el resultado de la utilización del operador AND bit a bit para probar un marcador que tiene el valor cero.Para probar marcadores con valor cero, es preciso efectuar una comprobación de la igualdad, por ejemplo, utilizando == o !=.
Ejemplo
El código siguiente genera esta advertencia:
#define FLAG 0
void f(int Flags )
{
if (Flags & FLAG)
{
// code
}
}
Para corregir esta advertencia, utilice el código siguiente:
#define FLAG 0
void f(int Flags )
{
if (Flags == FLAG)
{
// code
}
}