qq_狗活_twEPQW
2019-03-02 00:23
能看清图吧。我这只有3个printf怎么会输出4给数呢/看不懂了。 还有我记得函数调用它下面的函数需要声明的吧,为什么我试着把函数a和b调换位置也能出结果。 感谢
看了半天。。。b函数调用了两次,a函数里printf函数调用一次b函数,同时返回值也是b函数,在这又调用一次,所以b函数调用了两次,打印了两次“18”。
第二个问题,调用函数时应该是从主函数外找对应的函数,爱仕达说法娃啊五号if横扫的话发啊过,嗯就是这样(我说的这么严肃你应该懂了吧)
真秀
首先输入数的是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次
刚刚刷题时突然意识到,第二个问题的答案。实际上执行程序时是从main函数开始执行,也就是说无论你的自定义函数之间怎么互相调用,在执行时一定时从main函数开始,那么你这些被调用的函数就是在main函数的上面,所以不需要声明
秀的我头皮发麻
C语言入门
926207 学习 · 20797 问题
相似问题