我正在检查别人的代码,我无法获得以下
的语法c = x<0 ? x = -x,'L':'R';
和
if(x) x--,putchar(c);
根据赛门铁克,很明显,在第一个,变量c被分配为'L'或'R'。在第二个语句中,同时执行x——和putchar()。但是逗号操作符在这里的作用究竟是什么? 但是这里逗号操作符的作用是什么呢?
在这种情况下,代码混淆。最初的开发者可能认为他们很聪明。
逗号操作符允许您在单个语句中执行多个操作,但您几乎总是使用两个语句更好。在这些情况下,它展开为:
if( x < 0 ) {
x = -x;
c = 'L';
} else {
c = 'R';
}
和
if(x) {
x--;
putchar(c);
}
逗号运算符对两个表达式求值,并返回最后一个表达式的值。
- 第一个表达式在一个语句中做两件事。如果选择'L'或者'R',如果选择'L',也将x设置为负值。
- 第二个表达式('if'后面的部分)减少x和then输入一个字符。没有更多的上下文,这是不清楚的意思。
的可读性。第一个尝试将if
语句硬塞到条件表达式中。但是第二个已经使用了if
语句,因此不清楚为什么选择逗号操作符。
在该上下文中,逗号操作符的作用是允许使用条件操作符并将赋值作为其中一个表达式求值的一部分。
在我看来,这只是一个可怕的风格。if
语句可以更好地传达代码的意图,并且几乎不会更有效率。