编译器警告(等级 4)C4706

用作条件的分配

条件表达式中的测试值是赋值的结果。

赋值有一个值(赋值左侧的值)可以在另一个表达式中合法使用,包括测试表达式。

下面的示例生成 C4706:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if (a = b) // C4706
   {
   }
}

使用 ((表达式))禁止显示警告。 例如:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ((a = b)) // No warning
   {
   }
}

如果你的意图是测试关系,而不是进行赋值,请使用 == 运算符。 例如,以下测试 a 和 b 是否相等:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if (a == b)
   {
   }
}

如果打算将测试值设为工作分配的结果,请进行测试,以确保分配为非零或非 null。 例如,以下代码不生成此警告:

// compile with: /W4
int main()
{
   int a = 0, b = 0;
   if ((a = b) != 0)
   {
   }
}