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

求问,以下程序的输出结果是_______________。

求问,以下程序的输出结果是_______________。

C PHP
函数式编程 2022-03-24 19:15:08
以下程序的输出结果是_______________。#include <stdio.h>main(){int k=4,m=1,p;p=func(k,m);printf("%d,",p);p=func(k,m);printf("%d\n",p);}func(a,b)int a,b;{static int m=0,i=2;i+=m+1;m=i+a+b;return(m);}A、8,17B、8,20C、8,16D、8,8参考答案:A不懂,求解释
查看完整描述

2 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

第一次调用函数 i+=m+1 得到 i=3 m=i+a+b 得到m=8 所以返回8
由于m和i是静态的 所以第二次调用时,i=3,m=8,然后i+=m+1 得到i=12 m=i+a+b m=17
返回17
因此答案为A

查看完整回答
反对 回复 2022-03-28
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

第一次func(a,b)函数时,传递过来的两个值是4,1 即在func(a,b)函数中a=4,b=1 static int m=0,i=2,定义了两个静态变量,即一直战用内存,函数调用结束不释放,结果依然是上一次改变后的结果。
执行 i+=m+1 →即 i=2+0+1=3;
执行 m=i+a+b; → m=3+4+1=8;
执行 return(m) →返回 m=8;
printf("%d,",p); 输出 8

第二次执行func函数 依然传递 4,1
在func函数中,因为m 和i是静态变量,所以这时m=1,i=3
执行 i+=m+1; → i=3+8+1=12;
执行 m=i+a+b; → m=12+4+1=17;
执行 return(m) →返回 m=17;
printf("%d,",p); 输出 17
最后结果为 8 ,17



查看完整回答
反对 回复 2022-03-28
  • 2 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信