以下程序的输出结果是______。 int x=3; main() { int i; for(i=1; i<x; i++) incre(); } incre() { sta

admin2010-09-05  22

问题 以下程序的输出结果是______。        int x=3;    main()    {  int i;       for(i=1; i<x; i++)             incre();    }    incre()    {  static int x=1;       x*=x+1;       printf(" % d", x);    }

选项 A、3 3
B、2 2
C、2 6
D、2 5

答案C

解析 C语言规定如果全局变量与局部变量同名,则在局部变量的作用域内全局变量不起作用。程序开头定义的变量x为全局变量,函数incre中定义的变量x是局部静态变量,存放在静态存储区,incre调用结束后不释放x占据的存储单元。main函数中使用的x是全局变量x=3,所以main函数中调用函数incre两次。调用过程如下。第1次调用:x=x*(x+1)=1×(1+1)=2,printf函数输出2;第2次调用:x=x*(x+1)=2×(2+1)=6,printf函数输出6。
转载请注明原文地址:https://kaotiyun.com/show/IpWp777K
0

最新回复(0)