Edit

Share via


Warning C6289

Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead?

Remarks

This warning indicates that in a test expression a variable is being tested as unequal to two different constants. The result depends on either condition being true, but it always evaluates to true.

This problem is often caused by using || in place of &&, but can also be caused by using != where == was intended.

Code analysis name: MUTUALEXCLUSIONOVERORISTRUE

Example

The following code generates this warning:

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

To correct this warning, use the following code:

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

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