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