C语言 请帮忙详细解释下x++和++x

#include <stdio.h>
int x = 1;
int f(int x)
{
return (x++);
}
main()
{
int y;
y = f(2);
x = f(x);
printf("y=%d x=%d\n",y,x);
}
运行结果是2,1
有点搞不懂return(x++)到底是要返回什么值啊?

x++:先赋值在自加,表达式的值为x,而x的值加1,比如b=5,a=b++,那么a=5,b=6;
++x:先自加后赋值,表达式的值为x加1后的值,x自身加1.比如b=5,a=++b,那么a=6,b=6;
所以你f()函数返回的是x的值,不是加1后的;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-27
x++是执行完这个语句后x再加一
比如说x=1
y=x++的话 y就等于1,而x在执行完这个语句后,在执行下个语句前才加1

++x没那么复杂就直接变成2了
第2个回答  2011-01-27
假设X=1
则X++=1,X=2;只是X自身+1,表达式的值不变;
++X=2,X=2,X的自身+1,表达式的值也+1
第3个回答  2011-01-27
返回x
return(x++);执行完之后x加一

x++就是先用x后x加一
++x就是先x加一后用x
第4个回答  2011-01-27
++,--运算前缀形式和后缀形式意义不同。前缀形式是在使用变量之前先将其值增1或减1;后缀形式是先使用变量原来的值,使用完后再使其值增1或减1。既++i是先执行i=i+1后,再使用i的值;i++是先使用i的值后,再执行i=i+1.
你这个程序是带有调用函数并有返回值的。但是返回值都是先打印然后才++的,所以运行结果是2,1.
第5个回答  2011-01-27
简单说++x要比x++快;如果单独写,它们是一样的.
如果左边有变量.前者自加一,后者依然值不变.

后者还要在内存中另开一个临时存储空间.
相似回答