有下列程序: 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;

admin2012-12-03  37

问题 有下列程序:
    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。
转载请注明原文地址:https://kaotiyun.com/show/O0Pp777K
0

最新回复(0)