局部變量與全局變量的問題
請問,下面的程序中怎么理解?
#include?<stdio.h>
int?x?=1;
????int?fn1(int?x)
????{
????int?y,z;
????z=2;
????y=x+z;
????printf("y=%d\n",y);????????????/*這里為什么會輸出“y=4”,在上面不是定義了“x=1;”的嗎?應該是3啊!雖然我懂下面的調用函數中“fn(2)”又定義了x值,但是為什么程序不使用“x=1”計算呢?*/
????return?0;
????}
????
????int?main()
????{
????????fn1(2);
????????int?y=10;
????????printf("x+y=%d",x+y);???/*這里為什么x值又是按照“x=1”計算的?*/
????????return?0;
????}該程序得出的結果是
y=4
x+y=11
請大神幫忙解答!謝謝!

2015-08-08
在main()函數中先調用了fn1(2),所以此時將實參傳入,得x=2,這里的x為局部變量,y=2+2=4;
printf("x+y=%d",x+y);???這里用的x為全局變量,所以為10+1=11