永发信息网

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

答案:4  悬赏:40  手机版
解决时间 2021-03-10 11:37
  • 提问者网友:了了无期
  • 2021-03-10 01:23
c语言的问题#include<stdio.h>func(int a,int b)
最佳答案
  • 五星知识达人网友:末日狂欢
  • 2021-03-10 02:38
#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
}
全部回答
  • 1楼网友:青灯有味
  • 2021-03-10 04:30
21
这就是z--和--z的区别,z--是在执行z--后的语句后才把z的值-1。
  • 2楼网友:独钓一江月
  • 2021-03-10 04:11
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吧,清楚 ?
  • 3楼网友:未来江山和你
  • 2021-03-10 03:30
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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯