C6289

警告 C6289:运算符不正确: 基于 || 的互斥运算为非零常数。是否希望改用 &&?

此警告意味着,在测试表达式中,对照两个不同的常数测试变量,测试结果取决于哪个条件为 true。此运算的计算结果总是为 true。

此问题通常是由于用 || 来代替 && 而导致的,但也可能是由于在应当使用 == 的位置使用 != 而导致的。

示例

下面的代码生成此警告:

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

若要更正此警告,请使用下面的代码:

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

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