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

admin2020-11-23  27

问题 有以下程序
fun (int x,int y)
{ static int m=0,i=2;
i+ =m+1; m=i+x+y; return m;
}
main ( )
{ int j=1, m=1, k;
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://kaotiyun.com/show/xy3p777K
0

最新回复(0)