求大神详解这道题答案为什么是28,a=4什么时候用,不是太懂,求详解

 我来答
wjcmqyd
2018-03-18 · TA获得超过5624个赞
知道大有可为答主
回答量:3236
采纳率:79%
帮助的人:802万
展开全部
答:此段程序虽短,却牵涉许多概念问题,试分析如下:
第一步:程序开始时主函数将全局变量a=4的值赋值给s,以i=0调用函数f,在函数f中,局部静态变量a被赋值5(局部静态变量a在if及else程序段是不可见的),if(n%2)为0(即假),所以执行else,在else分支中,全局变量a被赋值7,t+=a++使得t=7,最后一个语句return t+a++用的是局部静态变量a=5的值,使得t=12并将此值返回主函数,s+=f(i)使得s=16,而其中a++使得局部静态变量a=6;
第二步:主函数以i=1调用函数f,在函数f中,局部静态变量a因为在整个程序运行期间初始化时只能被赋值一次使得程序跳过static int a=5语句,if(n%2)为1(即真),所以执行if程序段,此段程序将全局变量a赋值为6,t+=a++使得t=6,同样return t+a++用的是局部静态变量a=6的值,所以t=12并将此值返回主函数,s+=f(i)使得s=28,而其中a++使得局部静态变量a=7。
第三步:打印s=28的值,程序结束。
好长时间没有看c了,以上分析难免有错误。
更多追问追答
追问
亲,静态变量和全局变量究竟是如何区分的呀,例如返回的t+a++为什么用静态变量的值啊
麻烦亲了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式