vin*_*nit 1 c++ syntax comma comma-operator
我正在通过别人的代码,我无法获得以下语法
c = x<0 ? x = -x,'L':'R';
Run Code Online (Sandbox Code Playgroud)
和
if(x) x--,putchar(c);
Run Code Online (Sandbox Code Playgroud)
通过语义学,很明显,在第一个中,变量c被赋予"L"或"R".而在第二个中,x--和putchar()都被执行.但是逗号运算符的作用到底是什么?
逗号运算符计算两个表达式,并返回最后一个的值.
通过使用单独的语句而不是逗号运算符,可以提高两者的可读性.第一个尝试将if语句变成条件表达式.但第二个已经使用了一个if声明,因此不清楚为什么选择逗号运算符.
但是这里逗号运算符的作用到底是什么?
在这种情况下,代码混淆.最初的开发人员可能认为他们很聪明.
逗号运算符允许您在单个语句中执行多个操作,但使用2个语句几乎总是更好.在这些情况下,它扩展到:
if( x < 0 ) {
x = -x;
c = 'L';
} else {
c = 'R';
}
Run Code Online (Sandbox Code Playgroud)
和
if(x) {
x--;
putchar(c);
}
Run Code Online (Sandbox Code Playgroud)