求解这题C语言17是怎么算的?

 我来答
cyjayxw
高粉答主

2018-12-22 · 每个回答都超有意思的
知道大有可为答主
回答量:6603
采纳率:91%
帮助的人:1199万
展开全部
因为在函数func里面m和i是static变量,static变量只初始化一次,第一次初始化时m=0,i=2;
func被调用后m=8,i=3;第二次再调用func时m和i的值不会再被初始化,仍是m=8,i=3;所以计算出来的结果i=3+8+1=12;m=12+4+1=17,返回的结果就是17
追问
明白啦
谢谢了!
追答
不客气
cdyzxy
2018-12-22 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3731万
展开全部
静态变量会在赋初值后保持其值,初值只赋一次,以后再使用不再赋值
main中的m和func中的m是两个变量
k=4;m=1;[k=4,m=1]
p=func(k,m)
  func,a=4,b=1: m=0,i=2;[m=0,i=2],i+=m+1;[i=2+0+1=3],m=i+a+b;[m=3+4+1=8],return m;返回8
p=8;[p=8],printf输出: 8,
p=func(k,m)
  func,a=4,b=1: [m=8,i=3],i+=m+1;[i=3+8+1=12],m=i+a+b;[m=12+4+1=17],return m;返回17
p=17;[p=17],printf输出: 17
总输出为:8,17
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式