C6316

Actualización: noviembre 2007

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 debe utilizar 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 indicadores 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
  }
}