C6316
Advertencia C6316: Operador incorrecto: la expresión probada es constante y no es cero.Utilice el operador AND bit a bit para determinar si están establecidos los bits
Esta advertencia indica el uso de OR bit a bit (|) cuando se debería haber utilizado el AND bit a bit (&).El operador OR bit a bit suma los bits a la expresión resultante, mientras que AND bit a bit selecciona sólo aquéllos que sean comunes entre los dos operadores.Las comprobaciones para los marcadores se deben realizar con AND bit a bit o mediante una comprobación de igualdad.
Ejemplo
El código siguiente genera esta advertencia:
#define INPUT_VALUE 2
void f( int Flags)
{
if (Flags | INPUT_VALUE) // warning
{
// code
}
}
Para corregir esta advertencia, utilice el código siguiente:
#define ALLOWED 1
#define INPUT_VALUE 2
void f( int Flags)
{
if ((Flags & INPUT_VALUE) == ALLOWED)
{
// code
}
}