问题 单项选择题

以下程序执行后的输出结果是
fun(int x, int y)
static int m=0, i=2;
i+=m+1; m=i+x+y; return m;

main()
intj=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

解析: maln函数中的局部变量m与fun函数中的静态局部变量m同名,因此main访问的是其局部变量m,所以main中的两次函数调用,实际上都是调用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。

单项选择题
判断题