c语言的问题#include<stdio.h>func(int a,int b)

2025-01-03 00:30:19
推荐回答(4个)
回答1:

#include
int func(int a,int b)
{
int c;
c=a+b;
return c;
}
main()
{
int x=6,y=7,z=8,r;//(x--,y++,x+y)为逗号表达式,取最后一项的结果,即x+y==13
r=func((x--,y++,x+y),z--);//因为z--为后减减,所以调用函数相当于调用func(13,8)
printf("%d\n",r);//输出a+b,即13+8
}

回答2:

r=func((x--,y++,x+y),z--);
就这一行是关键啦,大家都没意见吧。
x--;首先x的值代入计算然后再自减那么x+y中的x=6
y--;首先y的值代入计算然后再自加那么x+y中的y=7
值传递中的a的值为x+y=6+7
同理值传递中的b为8
结果=13+8=21

回答3:

21 程序这么短也不用一步步debug 直接看变量的值
从main函数看起,输出是 r 调用的func()函数 ,传参x y z
1:参数a=(x--,y++,x+y)=13 b=z--=8 (x--先使用x的值再减1操作)
2:调用func(13,8)返回 13+8=21

还是F5吧,清楚 ?

回答4:

21
这就是z--和--z的区别,z--是在执行z--后的语句后才把z的值-1。