选择题
有以下程序:
#include <stdio.h>
int f(int n);
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。
提交答案
关闭