Compartir a través de


C6288

Actualización: noviembre 2007

C6288

Advertencia C6288: Operador incorrecto: la inclusión mutua de && es siempre cero. ¿Deseaba utilizar || en su lugar?

Esta advertencia indica que en una expresión de prueba se está probando una variable con respecto a dos constantes distintas y el resultado depende de que ambas condiciones sean true. El código en estos casos indica que no se capturó correctamente la intención del programador. Es importante examinar el código y corregir el problema; de lo contrario, el código no se comportará de la manera esperada.

Este problema suele deberse al uso de && en lugar de ||, pero también se puede provocar usando == donde se pretendía usar !=.

Ejemplo

El código siguiente genera esta advertencia:

void f(int x)
{
  if ((x == 1) && (x == 2)) // warning
  {
    // code ...
  }
}

Para corregir esta advertencia, utilice el código siguiente:

void f(int x)
{
     if ((x == 1) || (x == 2)) 
     {
          // logic
     }
    
    /* or */
    if ((x != 1) && (x != 2))
    {
        // code ...
    }
}

La herramienta de análisis no advierte de si la expresión tiene efectos secundarios.