问题 单项选择题

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

B.8

C.9

D.10

答案

参考答案:C

解析: f函数中static int a=1;的a是静态局部变量,不像自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。s=f(a);,n+=a++;返回n=4,s=f(a);的s值为4,然后执行s=s+f(a);f(a)返回5,即s=s+f(a);执行后s=9。

单项选择题
单项选择题