Advertencia C6289

Operador incorrecto: la exclusión mutua de || siempre es una constante distinta de cero. ¿Tenía intención de utilizar && en su lugar?

Comentarios

Esta advertencia indica que en una expresión de prueba se está probando una variable como desigual a dos constantes diferentes. El resultado depende de que cualquiera de las condiciones sea true, pero siempre se evalúa como true.

Este problema suele deberse al uso || en lugar de &&, pero también puede deberse al uso != de dónde == estaba previsto.

Nombre del análisis de código: MUTUALEXCLUSIONOVERORISTRUE

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