Compartir a través de


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