有以下程序: #include int f(int r1); main() { int a=3,S; s=f(a); s=s+f(a); printf(“%d\n”,s); }

admin2017-11-06  31

问题 有以下程序:
    #include
    int f(int r1);
    main()
    {    int a=3,S;
    s=f(a);
    s=s+f(a);
    printf(“%d\n”,s);
    }
    int f(int n)
    {    static int a=1;
    n+=a++:
    return n;
    }
    程序的运行结果是(    )。

选项 A、9
B、8
C、7
D、10

答案A

解析 题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次调用函数执行n+=a++;时,a先与n相加再进行自增。n的值为4,a的值为2,且a变量执行完后空间没有释放。再执行s=s+f(a)时,s的值为4,调用f(a)函数时,n的返回值为n=3+2:5,且此时a的值为3,所以s的值为9。
转载请注明原文地址:https://kaotiyun.com/show/WBxp777K
0

最新回复(0)