C6287

更新:2007 年 11 月

警告 C6287:冗余代码: 左右两侧的子表达式完全相同

此警告意味着在表达式中检测到冗余元素。

不检查代码,就很难判断此问题的严重性。重复测试本身是无害的,但是删除第二个测试可能会产生严重的后果。应当检查代码,以确保测试不被省略。

示例

下面的代码生成此警告:

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

下面的代码演示更正此警告的各种方法:

void f(int x, int y)
{
  /* Remove the redundant sub-expression: */
  if (x == 1) 
  {
     // logic 
  }
  if (x != 1) 
  {
    // logic
  }
  /* or test the missing variable: */
  if ((x == 1) && (y == 1))
  {
     // logic
  }
  if ((x != 1) || (y != 1))
  {
     // logic
  }
}