问题
单项选择题
以下程序的输出结果是______。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。