★C语言,函数部分,第1题

fun(inta,intb){staticintm=0,i=2;i+=m+1;m=i+a+b;returnm;}main(){intk=4,m=1,p;p=fun(k,m... fun( int a, int b)
{static int m=0,i=2;
i+=m+1;
m=i+a+b;
return m;}
main()
{ int k=4,m=1,p;
p=fun(k,m);
printf("%d",p);
p=fun(k,m);
printf("%d",p);}
答案:8,17
能告诉我这个答案是怎么算出的么?
展开
 我来答
cooldaizi
2010-08-18 · TA获得超过624个赞
知道小有建树答主
回答量:588
采纳率:0%
帮助的人:465万
展开全部
i+=m+1; 先算m+1=1,所以就等同于i+=1,也就是i=2+1,因此i=3
m=i+a+b; m=8,这个不解释了

第二次
由于m和i都是static,因此此时m的值为8。i的值为3(是上次计算的结果)
同理,i+=m+1; i=12
m=i+a+b; m=17
大门小子
2010-08-18
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
这个问题的关键就是static 声明变量,static类型的变量初始化只有一次,所以当你第二次调用fun函数时,程序不重新对m,i进行初始化,直接用上次的结果。所以答案才会是17
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式