首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ assignment -时尚还是性能?

C++ assignment -时尚还是性能?
EN

Stack Overflow用户
提问于 2010-05-20 03:46:53
回答 9查看 901关注 0票数 11

在编写Java代码多年之后,当我看到下面这条C++语句时,我感到很惊讶:

代码语言:javascript
复制
int a,b;
int c = (a=1, b=a+2, b*3);

我的问题是:这是一种编码风格的选择,还是有真正的好处?(我正在寻找一个实践用例)

我认为编译器会像下面这样看到它:

代码语言:javascript
复制
int a=1, b=a+2;
int c = b*3;

(这个的官方名称是什么?我假设它是一个标准的C/C++语法。)

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-05-20 03:48:42

这是comma operator,用了两次。你对结果的看法是正确的,我看不出这样使用它有多大意义。

票数 17
EN

Stack Overflow用户

发布于 2010-05-20 03:50:19

看起来像是,(逗号)运算符的模糊用法。

在C++中,这不是一种有代表性的处理方式。

票数 9
EN

Stack Overflow用户

发布于 2010-05-20 04:05:15

逗号运算符的唯一“良好风格”使用可能是在具有多个循环变量的for语句中,使用的内容如下:

代码语言:javascript
复制
// 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“放在引号中,因为几乎总有比使用逗号运算符更好的方法。

我看到的另一种情况是使用三元运算符,当你想要有多个副作用时,例如,

代码语言:javascript
复制
bool didStuff = DoWeNeedToDoStuff() ? (Foo(), Bar(), Baz(), true) : false;

同样,还有更好的方式来表达这类事情。这些习语是我们在显示器上只能看到24行文本的日子里遗留下来的,在每行中塞入大量内容具有一定的实际意义。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2868850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档