【发布时间】:2014-06-29 06:16:27
【问题描述】:
谁能解释以下C程序的结果?
#include<stdio.h>
int main()
{
int i=2;
printf("%d %d %d",i,i++,++i);
return 0;
}
4 3 4的输出怎么样?
【问题讨论】:
-
我不能就发出的具体值给你一个正确的答案,但我知道这是未定义的行为。 C 标准没有规定将参数评估为函数的顺序。
-
除了@KarlNicoll 所说的,编译器之间的输出可能不同。例如,我尝试使用 clang,它却给了
2 2 4。 -
关于荒谬代码的荒谬问题有几千个重复。没有头脑正常的人会写出这样的垃圾,也没有人真正关心结果。
-
请阅读本指南关于序列点stackoverflow.com/questions/4176328/…
标签: c post-increment pre-increment