有以下程序: #include fun(int x,int y) {static int m:0,i=2; i+=m+1; m=i+X+Y; return m; } main( ) {

admin2015-08-09  20

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

答案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。
转载请注明原文地址:https://kaotiyun.com/show/0QDp777K
0

最新回复(0)