Compartir a través de


C6289

advertencia C6289: Operador incorrecto: la exclusión mutua de || es siempre una constante distinta de 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 una de las condiciones sea true.En este caso, la evaluación siempre es true.

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 != 3))
  {
    // code 
  }
}

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

void f(int x)
{
  if ((x != 1) && (x != 3))
  {
    // code 
  }
}

/* or */
void f(int x)
{
  if ((x == 1) || (x == 3))
  {
    // code 
  }
}