警告 C6288

运算符不正确:基于 && 的互含运算始终为 0。 是否打算改用 ||?

备注

此警告指示在测试表达式中,将针对两个不同的常量测试变量。 结果取决于这两个条件都为 true,这是不可能的。 这些情况下的代码指示未正确捕获程序员的意图。 检查代码并更正问题非常重要。 否则,代码不会按照预期方式运行。

此问题通常由使用 && 代替 || 引起,但也可能由在应该使用 != 的地方使用了 == 而引起。

代码分析名称:MUTUALINCLUSIONOVERANDISFALSE

示例

以下代码将生成此警告:

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

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

void f(int x)
{
     if ((x == 1) || (x == 2))
     {
          // logic
     }

    /* or */
    if ((x != 1) && (x != 2))
    {
        // code ...
    }
}

如果表达式具有副作用,则分析工具不会发出警告。