有以下程序 #include int a=2; int f() { static int n; int m; m=n=0; n++; a++; m++; return n+m+a; } main() { int k; for (k=0; k

admin2019-12-17  17

问题 有以下程序
#include
int a=2;
int f()
{ static int n;
int m;
m=n=0;
n++; a++; m++;
return n+m+a;
}
main()
{ int k;
for (k=0; k<3; k++)
printf("%d,", f( ));
printf("\n");
}
程序的运行结果是( )。

选项 A、5,6,7,
B、5,7,9,
C、5,8,11,
D、5,5,5,

答案A

解析 局变量在当前文件内也是一直存在的。而静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,函数f()在定义静态变量n时并没有对其初始化,接下来有个赋值语句"m=n=0;"所以每次执行函数f()时,静态变量n都会先被赋值为0再自加1,所以输出的f(0)=1+1+3=5,n=1,m=1,a=3;f(1)=1+1+4=6,n=1,m=1,a=4;f(2)=1+1+5=7,n=1,m=1,a=5。所以答案选A。
转载请注明原文地址:https://jikaoti.com/ti/7kG0FFFM
0

最新回复(0)