有以下程序 #include int f ( int m ) { static int n=0; n+=m; return n; } main() { int n=0; printf ( "%d,", f(++n) ); printf ( "%d\n",

admin2015-07-28  27

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

选项 A、1,2
B、1,1
C、2,3
D、3,3

答案A

解析 静态变量是在编译时就被分配存储空间,所占用存储单元直到程序结束时才释放,其初始化只进行一次。函数f()的功能是用n累加所有调用该函数时传入的m的值,所以第一次调用函数f(++n),传入的参数为1,返回的值为1;第二次调用函数f(n++),传入的参数仍为1,返回时n在原先的基础上继续累加1,返回值为2,所以输出结果为选项A)。
转载请注明原文地址:https://kaotiyun.com/show/3OJp777K
0

最新回复(0)