标签: c undefined-behavior sequence-points
在以下代码中
int main(){ int a=3; printf("%d %d %d",++a,a,a++); return 0; }
如规定,来自C99附录C:,
以下是5.1.2.3中描述的序列点:
评估函数参数的顺序是未定义的,如C标准所规定。
但是,在printf的函数调用中,我们有用逗号分隔的参数,它们被分类为序列点。那么为什么这个陈述对应于未指明的行为?
答案 0 :(得分:12)
因为函数调用中的逗号是而不是 comma operator而是分隔符。所以它没有引入任何序列点。