C6288

警告 C6288:运算符不正确: 基于 && 的相同运算始终为 0。 是否希望改用 ||?

此警告意味着,在测试表达式中,对照两个不同的常数测试变量,测试结果取决于两个条件是否均为 true。 上述情况下的代码意味着未能正确实现程序员的目的。 检查代码并更正此问题很重要;否则代码会与预期的行为方式不符。

此问题通常是由于使用 && 而不是 || 而导致的,不过在原本应使用 != 的情况下使用 == 也同样会出现此问题。

示例

下面的代码生成此警告:

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

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