问题 单项选择题

以下程序执行后的输出结果是
fun(int x,int y)
static int m=0,1=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

解析: main函数中的局部变量m与fun函数{中的静态局部变量m同名,因此main访问的是其局部变量m,所以mam中的两次函数调用,实际上都是调用fun(1,1)。第一次调用时,i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。第二次调用时,i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+1=11。所以程序输出5,11。

单项选择题
单项选择题