问题
单项选择题
有以下程序:
#include <stdio, h>
int a =2;
int f(int n)
static int a: 3;
int t=0;
if(n%2) static int a=4;t+ =a++;
elsestatic int a=5;t+ :a++;
return t + a + +;
main ( )
int s=a,i;
for(i=0;i<3;i++)s + =f(i);
prinff("% d \n" ,s);
程序运行后的输出结果是( )。
A.26
B.28
C.29
D.24
答案
参考答案:C
解析: 在函数外面定义的变量a是全局变量,其作用范围从定义该变量的位置开始到本文件的结束;在f函数中的if子句(复合语句)和else子句中定义的变量a是局部变量,其作用范围只在其所在的复合语句内;在f函数中定义的第一个变量a是静态局部变量,其作用范围只限于函数f内部,无论被调用多少次都只初始化一次,并且保留上次函数调用结束时的值,该变量不对复合语句产生作用,所以,f函数的返回值是这个a变量和t值相加的结果。