什么是这种奇怪的条件运算符语法?

时间:2012-07-31 12:55:42

标签: c++ conditional-operator

我最近在代码库中看到了以下内容:

bool bRes = (a < b) ? a=b, true : false;

如果a < b,则执行a=b并且bRes为真。 到底发生了什么?条件运算符的文档没有提到关于链接表达式的任何内容。

编辑:要清楚我得到条件运算符部分,它是a=b, true作为单个表达式让我困惑。

2 个答案:

答案 0 :(得分:11)

好恶。这是comma operator的用法。 a=b, true正是你所说的。它执行每个表达式并得到最后一个表达式的值。

答案 1 :(得分:4)

这是一个正确的代码,但是以一种奇怪的方式编写。该语言允许以这种方式使用逗号运算符。

等效于

bool bRes;
if (a < b)
{
 a = b;
 bRes = true;
}
else
 bRes = false;