选择题

有以下程序

#include <stdio.h>

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
【答案解析】

声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函数调用时,该变量保留上一次函数调用结束时的值。本题子函数fun中的变量i和m均为静态局部变量。 因此第一次调用fun函数,返回m的值为5,第二次再调用fun函数时,i的值为3, m的值已经是5了,所以执行 i+=m+1, i的值变为9,m=i+x+y=9+1+1=11,故本题答案为A。