在编写Java代码多年之后,当我看到下面这条C++语句时,我感到很惊讶:
int a,b;
int c = (a=1, b=a+2, b*3);我的问题是:这是一种编码风格的选择,还是有真正的好处?(我正在寻找一个实践用例)
我认为编译器会像下面这样看到它:
int a=1, b=a+2;
int c = b*3;(这个的官方名称是什么?我假设它是一个标准的C/C++语法。)
发布于 2010-05-20 03:48:42
这是comma operator,用了两次。你对结果的看法是正确的,我看不出这样使用它有多大意义。
发布于 2010-05-20 03:50:19
看起来像是,(逗号)运算符的模糊用法。
在C++中,这不是一种有代表性的处理方式。
发布于 2010-05-20 04:05:15
逗号运算符的唯一“良好风格”使用可能是在具有多个循环变量的for语句中,使用的内容如下:
// Copy from source buffer to destination buffer until we see a zero
for (char *src = source, *dst = dest; *src != 0; ++src, ++dst) {
*dst = *src;
}我将"good-style“放在引号中,因为几乎总有比使用逗号运算符更好的方法。
我看到的另一种情况是使用三元运算符,当你想要有多个副作用时,例如,
bool didStuff = DoWeNeedToDoStuff() ? (Foo(), Bar(), Baz(), true) : false;同样,还有更好的方式来表达这类事情。这些习语是我们在显示器上只能看到24行文本的日子里遗留下来的,在每行中塞入大量内容具有一定的实际意义。
https://stackoverflow.com/questions/2868850
复制相似问题