有以下程序: #include intg(int a) {int b=2; static int c=2; b++;c--;return(a+b+c); } main() {int k,a=5; for(k=0;k<3;k++)printf(’’%d’’,

admin2021-04-28  18

问题 有以下程序:
#include
intg(int a)
{int b=2;
static int c=2;
b++;c--;return(a+b+c);
}
main()
{int k,a=5;
for(k=0;k<3;k++)printf(’’%d’’,g(a));
printf(’’\n’’);
}
执行后的输出结果是(  )。

选项 A、987
B、888
C、678
D、666

答案A

解析 静态局部变量只在第一次调用函数时初始化一次,其他调用都会保留上一次调用结束时的值。由于main函数for循环中k的取值为0,1,2,所以for循环三次调用g()函数,第1次调用给静态变量赋初值,以后每次调用静态局部变量都保留上一次函数调用结束后的值,第1次调用返回9,第2次调用时返回8,第3次调用返回7。
转载请注明原文地址:https://jikaoti.com/ti/Xfz0FFFM
0

最新回复(0)