【发布时间】:2017-06-26 14:00:45
【问题描述】:
在 c 中,
main() {
int a = (1,2,3,4);
printf("%d",a);
}
产生
的输出4
这是因为 comma(,) 运算符具有从右到左的优先级。 但是
main() {
int a = {1,2,3,4};
printf("%d",a);
}
产生一个输出
1
请任何人解释这背后的逻辑。 谢谢
【问题讨论】:
-
gcc -Wall告诉你什么? -
我认为这是constraint violation,因此是未定义的行为。
-
这一切看起来都不是标准的,截至 2017 年或过去 30 年也不正确。
-
实际上完全没问题 C. 几乎完全相同的副本:stackoverflow.com/questions/35266987/…
-
@Lundin(替换评论)——我看到它正在尝试对指针执行此操作,但此问题并未讨论是否允许这样做。看看我的回答,我对 §6.7.9 -- 2 的解释错了吗?