有以下程序:
#include< stdio.h >
int fun(int a)
{int b=2;
static int c=2;
b++:c--;return(a+b+c);
}
main()
{int k,a=2;
for(k=0;k< 3;k++)printf("%d",fun(a));
printf("\n");
}
执行后的输出结果是( )。
【正确答案】 C
【答案解析】由于main函数for循环中k的取值为0,1,2,所以for循环三次调用fun()函数,每次调用函数fun,形参a的值为2(实参a传入),局部变量b始化为2(fun函数中初始化),静态局部变量c,保留上一次函数调用结束后的值,所以第一次调用fun(),形参a=2,b=2,c=2,然后执行b自增1,c字减1,返回值为:2+3+1=6;第二次调用fun(),形参a=2,b=2,c=1,然后执行b自增1,c自减1,返回值为:2+3+0=5;第三次调用fun(),形参a=2,b=2,c=0,然后执行b自增1,c自减1,返回值为:2+3-1=4,所以结果为:654,答案为C。