猿问

以下代码中,最终的输出结果是什么?有大佬知道吗?

#include<stdio.h> func(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=func(k,m); printf("%d,",p);p=func(k,m); printf("%d\n",p)} 的输出结果是什么

MMTTMM
浏览 214回答 1
1回答

手掌心

#include<stdio.h>&nbsp;func(int&nbsp;a,int&nbsp;b){&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;int&nbsp;m=0,i=2;&nbsp;&nbsp;&nbsp;&nbsp;i+=m+1;&nbsp;&nbsp;&nbsp;&nbsp;m=i+a+b;&nbsp;&nbsp;&nbsp;&nbsp;return(m);}main(){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;k=4,m=1,p;&nbsp;&nbsp;&nbsp;&nbsp;p=func(k,m);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d,",p);&nbsp;&nbsp;&nbsp;&nbsp;p=func(k,m);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",p)}打印的是两次调用func的返回值。&nbsp;主函数中k,m值不变, 于是两次func的参数都是4,1对于funca=4 b=1第一次m=0,i=2;&nbsp; &nbsp;i+=m+1; >>>> i=3&nbsp; &nbsp;m=i+a+b;>>>>m=8返回8 &nbsp;输出也就是8第二次m=8 i=3;>>> m和i是静态变量,还是上次退出时的值i+=m+1; >>>> i=12&nbsp; &nbsp;m=i+a+b;>>>>m=17返回17&nbsp;于是输出是817
随时随地看视频慕课网APP
我要回答