【发布时间】:2018-02-20 23:15:10
【问题描述】:
#include<stdio.h>
int main(void) {
int a;
a = (1, 2), 3;
printf("%d", a);
return 0;
}
输出:2
谁能解释一下输出是2吗?
【问题讨论】:
-
您能解释一下您在编写代码时的期望吗?这不像把语句和表达式放在一起,代码应该是有意义的。你想达到什么目标?
-
@Olaf 要回答这个问题,不必知道 OP 期望什么。只需解释导致结果“2”的机制(如果您想努力并回答它)
-
@Olaf 这个问题显然不是关于调试的,而是关于主题的
-
@Olaf OP 很好奇,为什么 C 会这样。运算符优先级在这里是一个问题,我不认为大多数优秀的 C 书籍都描述了这种特殊情况。这既不是调试也不是“太宽泛”,而是试图理解这个(非平凡的)构造是如何工作的。我不同意,这是一个用勺子喂食的问题。
-
@Olaf 我不同意。即使在期待结果时,您也可能想知道“如何”或“为什么”。我以前没有见过这个案例,觉得很有趣。在此处同意 Ctx。
标签: c comma-operator