我正在浏览某些代码,但我无法获得以下语法
c = x<0 ? x = -x,'L':'R';
和
if(x) x--,putchar(c);
通过语义,很明显,在第一个中,变量c被赋值为'L'或'R'。而在第二个中,变量c--和putchar()都被执行。但逗号运算符的作用到底是什么?
答案 0 :(得分:5)
逗号运算符计算两个表达式,并返回最后一个的值。
通过使用单独的语句而不是逗号运算符,可以提高两者的可读性。第一个尝试将if
语句发送到条件表达式中。但第二个已经使用了if
语句,因此不清楚为什么选择逗号运算符。
答案 1 :(得分:5)
但是这里逗号运算符的作用到底是什么?
在这种情况下,代码混淆。最初的开发人员可能认为他们很聪明。
逗号运算符允许您在单个语句中执行多个操作,但使用2个语句几乎总是更好。在这些情况下,它扩展到:
if( x < 0 ) {
x = -x;
c = 'L';
} else {
c = 'R';
}
和
if(x) {
x--;
putchar(c);
}
答案 2 :(得分:2)
逗号运算符在该上下文中的作用是允许使用条件运算符并将赋值作为其中一个表达式的求值的一部分。
在我看来,这只是一种可怕的风格。 if
语句可以更好地传达该代码的意图,并且几乎没有效率。