我最近在代码库中看到了以下内容:
bool bRes = (a < b) ? a=b, true : false;
如果a < b
,则执行a=b
并且bRes
为真。
到底发生了什么?条件运算符的文档没有提到关于链接表达式的任何内容。
编辑:要清楚我得到条件运算符部分,它是a=b, true
作为单个表达式让我困惑。
答案 0 :(得分:11)
好恶。这是comma operator的用法。 a=b, true
正是你所说的。它执行每个表达式并得到最后一个表达式的值。
答案 1 :(得分:4)
这是一个正确的代码,但是以一种奇怪的方式编写。该语言允许以这种方式使用逗号运算符。
等效于
bool bRes;
if (a < b)
{
a = b;
bRes = true;
}
else
bRes = false;