问题 单项选择题

有以下程序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声明为静态局部变量,所以经过第一次主函数的调用后,局部静态变量m和i的值分别为5和3,当第一次函数调用结束时,他们的值保存不变,所以第二调用时,局部静态变量m和i的初始值分别为5和3,也就是说,在执行"i+=m+l"时,i的值为9,因此最终m的值为11。

多项选择题
单项选择题