两个C语言题目比较

来源:百度知道 编辑:UC知道 时间:2024/05/30 05:45:13
#include<stdio.h>
func(inta,intb)
{
int c
c=a+b
return c
}
main()
{
int x=2,y=4,z=6,r;
r=func((--x,++y,x+y),--z);
printf("%d\n",r);
}

#include<stdio.h>
func(inta,intb)
{
int c
c=a+b
return c
}
main()
{
int x=2,y=4,z=6,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
有什么不同啊????

--x是先减再利用,而x--是先利用再减
func((--x,++y,x+y),--z);==func(6,5);
func((x--,y++,x+y),z--);==func(6,6);
则第一个输出11
第二个输出 12

func((--x,++y,x+y),--z);==func(6,5);
func((x--,y++,x+y),z--);==func(6,6);

看不懂,关键是这个(x--,y++,x+y)是个什么东西?
这也没什么难的,就是x++,++x的关系,一般函数计算的时候都是从右到左的
所以不管是--x,++y,x+y还是x--,y++,x+y,这两者都是先计算x+y,然后再计算++y或者y++,最后计算--x和x--
--z是先将z-1,然后再将z放入函数计算
z--是先将z放入函数计算,完了再-1