逗号运算符在 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;
最佳答案
逗号运算符在所有 C/C++ 运算符中具有最低优先级。因此它总是最后一个绑定(bind)到表达式,这意味着:
a = b, c;
相当于:
(a = b), c;
另一个有趣的事实是逗号运算符引入了 sequence point 。这意味着表达式:
a+b, c(), d
保证按顺序计算其三个子表达式(a+b、c() 和 d)。如果它们有副作用,这一点就很重要了。通常,编译器可以按照他们认为合适的任何顺序来计算子表达式;例如,在函数调用中:
someFunc(arg1, arg2, arg3)
参数可以按任意顺序求值。请注意,函数调用中的逗号是非运算符;它们是分隔符。
关于c++ - 逗号运算符如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60161208/