沐竹雨
2015-08-08 15:28
请问,下面的程序中怎么理解?
#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
C语言入门
927999 学习 · 21542 问题
相似问题