永发信息网

c语言参数问题

答案:4  悬赏:10  手机版
解决时间 2021-04-25 19:29

#include<stdio.h>
int func(int a,int b)
{
 int c;
 c=a+b;
 return c;
}
void main()
{
 int x=6,y=7,z=8,r;
 r=func((x--,y++,x+y),z--);
 printf("%d",r);
}

这个形参和实参是怎么结合的

最佳答案
 r=func((x--,y++,x+y),z--);
这句函数调用语句,第一个参数是通过“逗号”运算符求出来的。
逗号运算,最终结果等于最右边的代数式的结果:
x--    // x=6;
y++ // y=7;
x+y  // 5+8 = 13
所以上面的语句就转化成了:r = func(13, 8);
结果:21
全部回答
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

给你分析下:

int x=6,y=7,z=8,r;
 r=func((x--,y++,x+y),z--);
(x--,y++,x+y)  是个数据 ,它是逗号表达式的值 

(x--,y++,x+y)  ->  x--    x=5 -> y++  y=8  -> x+y=5+8=13

z-- -> z=7

所以 fun(13,7)

return  13+7    ->return 20;

func((x--,y++,x+y),z--);包括两个实参,第一个是括号表达式(x--,y++,x+y),第二个是z--

括号表达式返回最右边表达式的值,应该是x+y

这样就调用fun()函数返回x+y和z--的和

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在汕头跑步去香港大概要多少天呢?
梦幻西游60级可以存多少经验?
『急求高手帮忙!!』我们球队有1个PF,1个SF
哪个网页可以自己制作诺基亚主题的网址?
一尺一存。是什么字啊
为什么柯南的主题曲大部分都是仓木唱的
win7支持的大游戏
原装的BL-5CA是哪个地方产的?电池是什么颜色
勾股定理证明 带图5种.
新仙剑奇侠传的问题!急!
求音乐高人,懂K歌之王进. 就是他的歌
dnf什么人好玩?
有谁在深圳布吉地区卖DHB的?
科光九瓦节能灯的电路图
沈阳民福制桶地址在什么地方,想过去办事
推荐资讯
这个是什么麦克风
什么是网游资料?怎样设置?
我有一个很好要的朋友,但是现在关系疏远了
小肚子上有肉,请问怎样才可以去掉…
地下城圣骑士我想弄一套35级的装备推荐一下好
爱一个人怎么办啊
宝宝为什么睡觉老磨牙?
加入学生会宣传部的申请书怎么写
棒棒堂有几个人?
哪个网站看电影最快
哑嗓唱什么歌好听?
教育万能名人名言,推荐5句万能引用名言,用于
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?