当我写这个的C代码,我随口编码:后增量运算用C
#include <stdio.h>
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",sizeof(i++));
printf("i : %d\n",i);
return 0;
}
而且,当我跑的代码,结果我得到的是,
i : 10
sizeof(i++) is: 4
i : 10
我百思不得其解通过这个结果,因为我期望i ++内的sizeof运算符增加i。但似乎不是。因此,出于好奇,我写了下面的程序:
#include <stdio.h>
int add(int i)
{
int a = i + 2;
return 4;
}
int main()
{
int i;
i = 10;
printf("i : %d\n",i);
printf("sizeof(i++) is: %d\n",add(i++));
printf("i : %d\n",i);
return 0;
}
这个程序,输出是:
i : 10
sizeof(i++) is: 4
i : 11
现在我越来越困惑。
对不起,如果这是一个noob问题(我是),但我真的不明白,即使如何谷歌这样的问题!
为什么我在这两个程序中的价值不同?请帮忙!
@ ring0我在Windows上运行gcc 4.6.3在Windows 12.04虚拟机之上。 – user2290802