【发布时间】:2018-09-04 09:01:03
【问题描述】:
这是我目前所理解的:
逗号运算符允许代码简洁,例如
int x = 0, y = 0, z = 0而不是int x = 0; int y = 0; int z = 0;。在这种情况下,它有点像分号的语法糖。逗号运算符充当序列点。所以在代码
f(), g();中,函数f()保证在g()之前执行并产生它的所有副作用。但如果你使用代码f(); g();,也是如此。逗号运算符是一个运算符,而分号只是一个程序标记,不参与表达式的计算。由于逗号运算符的优先级如此之低,因此在这方面它与分号几乎没有区别。
那么,我想知道这两种结构在实践中的语义差异是什么?是否存在使用逗号与使用分号产生不同结果的情况?
【问题讨论】:
-
在声明或定义变量时,逗号不是命令操作符,它只是不同声明之间的分隔符。
-
int x = 0, y = 0, z = 0是不是逗号运算符 -
请注意,逗号 operator 的语义在 C 和 C++ 中是不同的,因此请编辑您的问题以仅使用您真正想知道的语言标签。
-
逗号将返回最后一个操作数的左值。如果你愿意,你可以编写像
(b += 3, a) = 5;这样的丑陋代码。 -
@liliscent,在 C++ 中,是的,但不适用于 C。这里,逗号运算符的结果是右值,因此您给出的示例无效。
标签: c operators comma-operator