在C ++中语法运用逗号运算符

时间:2013-05-23 22:16:29

标签: c++ syntax comma comma-operator

我正在浏览某些代码,但我无法获得以下语法

c = x<0 ? x = -x,'L':'R';

if(x) x--,putchar(c);

通过语义,很明显,在第一个中,变量c被赋值为'L'或'R'。而在第二个中,变量c--和putchar()都被执行。但逗号运算符的作用到底是什么?

3 个答案:

答案 0 :(得分:5)

逗号运算符计算两个表达式,并返回最后一个的值。

  • 第一个表达式在一个语句中完成两件事。如果选择&#39; L&#39; 或者&#39; R&#39;如果&#39; L&#39;并且还将x设置为负数。被选中。
  • 第二个表达式(&#39; if&#39;之后的部分)递减x然后 放一个角色。如果没有更多的背景,这一点的含义就不清楚了。

通过使用单独的语句而不是逗号运算符,可以提高两者的可读性。第一个尝试将if语句发送到条件表达式中。但第二个已经使用了if语句,因此不清楚为什么选择逗号运算符。

答案 1 :(得分:5)

  

但是这里逗号运算符的作用到底是什么?

在这种情况下,代码混淆。最初的开发人员可能认为他们很聪明。

逗号运算符允许您在单个语句中执行多个操作,但使用2个语句几乎总是更好。在这些情况下,它扩展到:

if( x < 0 ) {
    x = -x;
    c = 'L';
} else {
    c = 'R';
}

if(x) {
    x--;
    putchar(c);
}

答案 2 :(得分:2)

逗号运算符在该上下文中的作用是允许使用条件运算符并将赋值作为其中一个表达式的求值的一部分。

在我看来,这只是一种可怕的风格。 if语句可以更好地传达该代码的意图,并且几乎没有效率。