永发信息网

c语言参数问题

答案:4  悬赏:10  手机版
解决时间 2021-04-25 19:29
  • 提问者网友:了了无期
  • 2021-04-24 19:24

#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);
}

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

最佳答案
  • 五星知识达人网友:春色三分
  • 2021-04-24 20:51
 r=func((x--,y++,x+y),z--);
这句函数调用语句,第一个参数是通过“逗号”运算符求出来的。
逗号运算,最终结果等于最右边的代数式的结果:
x--    // x=6;
y++ // y=7;
x+y  // 5+8 = 13
所以上面的语句就转化成了:r = func(13, 8);
结果:21
全部回答
  • 1楼网友:拜訪者
  • 2021-04-24 22:13
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
  • 2楼网友:时间的尘埃
  • 2021-04-24 21:40

给你分析下:

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;

  • 3楼网友:廢物販賣機
  • 2021-04-24 21:06

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

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

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

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯