邱泽和刘恺威谁帅:·请教一个C语言的填空题,麻烦解释一下,谢谢!!下面程序的执行完后全局变量n的值是______。

来源:百度文库 编辑:中科新闻网 时间:2024/05/10 17:55:20
下面程序的执行完后全局变量n的值是______。
int n=1;
main()
{ static int x=5;int y;
y=n;
func();
func();}
func()
{ static int x=4;int y=10;
x=x+2;
n=n+10;
y=y+n;
}
n=n+1
那么n=11啊

首先,main里面有个变量y,fun里面也有一个y,为方便起见,下面解释中分别记做main.y与fun.y,对x的操作不改变n,所以下面不讨论x的改变。
首先,定义的时候 main.y=n即main.y=1;
然后执行fun()两次
第一次执行fun():
fun.y=10;
然后n= n+10=11
fun.y = fun.y+n=21
第二次执行fun():
fun.y = 10 //因为是动态变量,每次重新初始化fun.y
然后n=n+10=21; <----答案出来了
fun.y=fun.y+n=31

所以最后结果是
n=21

n=21
这道题很简单啊,根本没考到难的,static用法也没考到
你就直接把n 代进去不就出来结果了么.
因为函数fun中没有定义n,所以当函数中出现n后,当然从全局引用!