问题
单项选择题
以下程序运行后的输出结果是______。
int d=1;
fun(int p)
static int d=5;d+=p
printf("%d,d");retum d;
main()
int a=3;printf("%d\n",fun(a+fun(d) ));
A.699
B.9
C.61515
D.6615
答案
参考答案:C
解析:[评析] 静态局部变量在编译时赋初值,即只赋初值—次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用—次函数重新给—次初值,相当于执行—次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第—次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。