【发布时间】:2017-11-30 09:57:45
【问题描述】:
逗号运算符在 C++ 中是如何工作的?
例如,如果我这样做:
a = b, c;
a 最终等于 b 还是 c?
(是的,我知道这很容易测试 - 只需在此处记录以供某人快速找到答案。)
更新:这个问题暴露了使用逗号运算符时的细微差别。只是为了记录这一点:
a = b, c; // a is set to the value of b!
a = (b, c); // a is set to the value of c!
这个问题实际上是受到代码中的一个错字的启发。打算是什么
a = b;
c = d;
变成了
a = b, // <- Note comma typo!
c = d;
【问题讨论】:
-
在此处了解更多信息。 stackoverflow.com/questions/12824378/…
-
What does the comma operator `,` do in C? 的可能重复项。它打败了你一天。而 lillq 的回答提供了关于
a = (b, c);的问题的答案。 -
但在这种情况下,
a = b, c = d;实际上与预期的a = b; c = d;执行相同? -
@NargothBond 不一定。如果
b和d是使用(和修改)公共状态的函数评估,则直到C++17才定义执行顺序。
标签: c++ comma-operator