我最近看到的基本代码如下:这是什么奇怪的条件运算符语法?
bool bRes = (a < b) ? a=b, true : false;
如果a < b
,然后a=b
执行和bRes
是真实的。 这里究竟发生了什么?条件运算符的文档没有提及任何有关链接表达式的内容。
编辑:很清楚我得到的是条件运算符部分,它是a=b, true
作为单个表达式让我困惑。
我最近看到的基本代码如下:这是什么奇怪的条件运算符语法?
bool bRes = (a < b) ? a=b, true : false;
如果a < b
,然后a=b
执行和bRes
是真实的。 这里究竟发生了什么?条件运算符的文档没有提及任何有关链接表达式的内容。
编辑:很清楚我得到的是条件运算符部分,它是a=b, true
作为单个表达式让我困惑。
Eww。这是comma operator的用法。 a=b, true
的确如你所说。它执行每个表达式并产生最后一个表达式的值。
这是一个正确的代码,但写在一个奇怪的风格。该语言允许以这种方式使用逗号运算符。
相当于是
bool bRes;
if (a < b)
{
a = b;
bRes = true;
}
else
bRes = false;
这是编写相同事物的更好方法。做得好! – 2012-07-31 13:16:11
但现在它是分配,而不是初始化。在原来的代码中,我们可能已经声明'bRes'是'const' ... – 2012-07-31 13:24:22
@KerrekSB:好点。怎么样'const bool bRes = a Andrey 2012-07-31 13:27:31
这就是逗号操作... – MFH 2012-07-31 12:57:32