问题 单项选择题

有下列程序:
fun(int x, int y)
static int m=0, i=2;
i+=++m;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

解析: 变量m和i声明为局部静态变量,因此第1次调用fun()函数后,局部静态变量m和i的值为5和3,第1次调用结束时,它们的值不变,第2次调用时,m和i的初始值分别为5和3。在执行“i+=m+1”后,i的值为9,因此,最终m的值为11。

单项选择题 A1型题
多项选择题