7

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

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

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

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

4

2 回答 2

11

哇。这是逗号运算符的用法。 a=b, true完全按照你说的做。它执行每个表达式并产生最后一个表达式的值。

于 2012-07-31T12:57:14.267 回答
4

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

等效的是

bool bRes;
if (a < b)
{
 a = b;
 bRes = true;
}
else
 bRes = false;
于 2012-07-31T12:59:24.197 回答