为了账号安全,请及时绑定邮箱和手机立即绑定

来个大佬给我讲一下

https://img1.sycdn.imooc.com//5c795ba00001631913590811.jpg


能看清图吧。我这只有3个printf怎么会输出4给数呢/看不懂了。   还有我记得函数调用它下面的函数需要声明的吧,为什么我试着把函数a和b调换位置也能出结果。    感谢

正在回答

4 回答

看了半天。。。b函数调用了两次,a函数里printf函数调用一次b函数,同时返回值也是b函数,在这又调用一次,所以b函数调用了两次,打印了两次“18”。

第二个问题,调用函数时应该是从主函数外找对应的函数,爱仕达说法娃啊五号if横扫的话发啊过,嗯就是这样(我说的这么严肃你应该懂了吧)

1 回复 有任何疑惑可以回复我~

真秀


首先输入数的是5

应该输出a(5)

由于不知道a()函数,所以先跳到a()函数

继续5,应该输出b(5)

由于不知道b()函数,先跳到b()函数

继续还是5

先输出5+13,也就是18

..............................

然后返回5+2,也就是7

b()函数返回的7是a()函数应该输出的

也就是输出7

...........................

由于之前传递给b()函数的c=5,而数字5是在b()函数中改变的

所以对于a()函数来说并没什么卵用

在a()函数里c的值没有改变

所以a()函数里,c还是5

接着返回b(5)

又回到b()函数了,带来的还是5,

于是先输出5+13,也就是18

.................................

然后返回5+2,也就是7

然后这个数是由a()函数中的return b(c)提供的

已经没有后续步骤了,所以7作为最后一个数返回a(e)

也就是最后a(e)=7,然后输出7+1,也就是8

..............................

所以总的输出了4次



0 回复 有任何疑惑可以回复我~
#1

qq_狗活_twEPQW 提问者

哦,return b(c)也会调用一遍b函数
2019-03-03 回复 有任何疑惑可以回复我~

刚刚刷题时突然意识到,第二个问题的答案。实际上执行程序时是从main函数开始执行,也就是说无论你的自定义函数之间怎么互相调用,在执行时一定时从main函数开始,那么你这些被调用的函数就是在main函数的上面,所以不需要声明

0 回复 有任何疑惑可以回复我~

秀的我头皮发麻

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

来个大佬给我讲一下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信