问答详情
源自:5-10 局部与全局

局部变量与全局变量的问题

请问,下面的程序中怎么理解?

#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

请大神帮忙解答!谢谢!

http://img.mukewang.com/55c5aff40001b43713660746.jpg

提问者:沐竹雨 2015-08-08 15:28

个回答

  • 昨夜小楼泣东风
    2015-08-08 16:21:50
    已采纳

    在main()函数中先调用了fn1(2),所以此时将实参传入,得x=2,这里的x为局部变量,y=2+2=4;

    printf("x+y=%d",x+y);   这里用的x为全局变量,所以为10+1=11