请问,下面的程序中怎么理解?
#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
请大神帮忙解答!谢谢!
在main()函数中先调用了fn1(2),所以此时将实参传入,得x=2,这里的x为局部变量,y=2+2=4;
printf("x+y=%d",x+y); 这里用的x为全局变量,所以为10+1=11