有以下程序 fun(int x,int y) main() {static int m=0,i=2; {int j=1,m=1,k; i+=m+1;m=i+x+y;return m; k=fun(j,m);printf("%d,",k); } k=f

admin2020-11-23  36

问题 有以下程序
fun(int x,int y)  main()
{static int m=0,i=2;  {int j=1,m=1,k;
i+=m+1;m=i+x+y;return m;  k=fun(j,m);printf("%d,",k);
} k=fun(j,m);printf("%d\n",k);}
执行后的输出结果是

选项 A、5,5
B、5,11
C、11,11
D、11,5

答案B

解析 子函数fun(int x,int y),将变量m和i声明为局部静态变量.因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i-=m+1”时,i的值为9,因此最终m的值为11。
转载请注明原文地址:https://jikaoti.com/ti/jQD0FFFM
0

最新回复(0)