有以下程序 #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); prin

admin2015-07-28  26

问题 有以下程序
#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、5, 11
B、5, 5
C、11, 11
D、11, 5

答案A

解析 静态变量在编译时就被分配存储空间,所占用存储单元直到程序结束时才释放,它的值在程序运行过程中一直存在,且变量的初始化只进行一次。所以第一次调用函数fun()时,得m=5,输出结果为5;第二次调用函数fun()初始,m和i的值不再初始化,保留第一次调用的计算结果5和3,计算后m=11,所以答案选A。
转载请注明原文地址:https://jikaoti.com/ti/EYn0FFFM
0

最新回复(0)