【发布时间】:2018-03-23 18:25:22
【问题描述】:
阅读以下两篇后...
What does the comma operator , do?
How does the Comma Operator work
我仍然不确定我是否无法解析我在别人的源代码中找到的以下语句:
int i, n, val, locala = a, bestval = -INFINITY;
逗号运算符按从左到右的顺序计算,是吗?如果我们使用括号来显示优先顺序,我认为我们有这样的事情:
(int i, (n, (val, (locala = a, (bestval = -INFINITY)))));
那么,也许,原文就相当于下面的?
int bestval = -INFINITY;
int locala = a;
int val;
int n;
int i;
如果是这样,为什么int 关键字应用于所有变量而不是仅应用于最左边的变量i?
另外,最右边的表达式返回它们的值,是吗?因此,locala = a 可能会在分配发生后返回 locala 的值。这是否意味着变量i、n 和val 都被初始化了?如果是这样,它们会被初始化为什么? -INFINITY? a的值?
【问题讨论】:
-
那不是逗号操作符。 C 中逗号的大多数用法不是逗号运算符。
-
体面的经验法则:如果左边的东西没有被丢弃,那不是逗号运算符。
-
@Toothpick Anemone 没有逗号运算符。有一个声明清单。
-
@KrassiEm:这不是一些超深奥的不切实际的构造。提问者试图理解真实的代码,他们以一种非常自然的方式误解了它。
-
@KrassiEm 解析问题和语言律师问题在这里不是题外话。如果你个人不是在寻找这样的问题,你为什么还要阅读它?标题应该足以阻止你。
标签: c variable-assignment comma assignment-operator comma-operator