局部變量與全局變量的問題
請(qǐng)問,下面的程序中怎么理解?
#include?<stdio.h> int?x?=1; ????int?fn1(int?x) ????{ ????int?y,z; ????z=2; ????y=x+z; ????printf("y=%d\n",y);????????????/*這里為什么會(huì)輸出“y=4”,在上面不是定義了“x=1;”的嗎?應(yīng)該是3啊!雖然我懂下面的調(diào)用函數(shù)中“fn(2)”又定義了x值,但是為什么程序不使用“x=1”計(jì)算呢?*/ ????return?0; ????} ???? ????int?main() ????{ ????????fn1(2); ????????int?y=10; ????????printf("x+y=%d",x+y);???/*這里為什么x值又是按照“x=1”計(jì)算的?*/ ????????return?0; ????}
該程序得出的結(jié)果是
y=4
x+y=11
請(qǐng)大神幫忙解答!謝謝!
2015-08-08
在main()函數(shù)中先調(diào)用了fn1(2),所以此時(shí)將實(shí)參傳入,得x=2,這里的x為局部變量,y=2+2=4;
printf("x+y=%d",x+y);???這里用的x為全局變量,所以為10+1=11