c语言选择题 解释一下计算过程

 我来答
百度网友816dc07
2014-06-24 · TA获得超过502个赞
知道答主
回答量:267
采纳率:100%
帮助的人:133万
展开全部
k是全局变量,它的有效范围从定义位置开始到源文件结束
函数f()中m和i是静态局部变量,函数调用结束后继续保留原值,在下一次调用改函数时,这两个变量就是上一次函数调用结束时的值。
函数main()m和p是自动变量,函数调用结束时自动释放存储空间
第一次p=f(k,m),f()的形参a得到值4,b得到值1,i+=m+k++的计算结果是(i=2+0+4,m=0,k=5);m=i+a+b的计算结果是m=6+4+1,函数返回11
第二次p=f(k,m),f()的形参a得到值5,b得到值1,i+=m+k++的计算结果是(i=6+11+5,m=11,k=6);m=i+a+b的计算结果是m=22+5+1,函数返回28
结果是11,28
追问
为什么第二次p=f()时,形参为5,k不是全局变量吗?应该一直等于4?
追答
全局变量的作用就是增加函数间数据联系的通道,让它的值可以被多个函数使用,如果在一个函数中改变了全局变量的值,就能影响到其它函数中全局变量的值。
main函数第一次调用函数f(k,m)时k=4,但调用之后全局变量k在函数f()中做了k++,k=5了,它影响函数main()第二次对k的引用,main函数第二次调用函数f(k,m)时k=5
创世纪era
2014-06-24 · TA获得超过106个赞
知道小有建树答主
回答量:101
采纳率:100%
帮助的人:72.3万
展开全部
第一次调用函数时 i = i + m + k++ = 2 + 0 + 4 = 6 完成此步时k自增1

m = i + a + b = 6 + 5 + 1 = 12
第二次调用函数时 i = i + m + k++ = 6 + 12 + 5 = 23 完成此步时k自增1

m = i + a + b = 23 + 7 + 1 = 31
所以答案是c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式