【发布时间】:2014-06-15 14:51:51
【问题描述】:
我在此站点中看到函数调用中的前缀增量或后缀增量可能会导致未定义的行为。我最近经历了其中之一。源代码是这样的:
#include <stdio.h>
void call(int,int,int);
int main()
{
int a=10;
call(a,a++,++a);
printf("****%d %d %d***_\n",a,a++,++a);
return 0;
}
void call(int x,int y,int z)
{
printf("%d %d %d",x,y,z);
}
输出为 12 11 12****14 13 14***_。但是,当函数中首先打印 a 时,它不应该是 10 吗?为什么会变成12?另外,为什么 a++ 从 12 减少到 11?有人可以请解释一下吗?谢谢。
【问题讨论】:
-
这是“未定义行为”部分。另见stackoverflow.com/questions/2989704/…
标签: c function post-increment pre-increment