单选题
有以下程序:
#include
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了,所以执行if=m+1,i的值变为9,m=i+x+y=9+1+1=11。