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

为什么输出一直是 50 10 50 呢?

#include <stdio.h>
int x = 77;
void fn1()
{
    printf("fn1(): x=%d\n", x);       
}
int main()
{
    int x1= 10;
    if(x1>0)
    {
        x = 100;
        x /= 2;
        printf("if语句内, x=%d\n", x);       
    }
    printf("main方法内, x=%d\n", x1);
    fn1();
    return 0;
}

fn1()函数输出的不是77?错在哪  请问大神们

提问者:京东塔和西瓜子i 2015-12-04 16:10

个回答

  • 晓50
    2017-06-26 09:33:06

    因为全局变量所有函数共用一个,主函数改变了全局变量,调用函数也跟着变了

  • 狼女
    2016-03-25 11:41:56

    if里x=100变成定义局部变量x=100
    int x=100

    #include <stdio.h>
    int x = 77;
    void fn1()
    {
        printf("fn1(): x=%d\n", x);       
    }
    int main()
    {
        int x = 10;
        if(x>0)
        {
            int x = 100;//注意这里,我也纠结了好一会,没有int的话就不是if里的局部变量了,而是main的局部变量
            x /= 2;
            printf("if语句内, x=%d\n", x);       
        }
        printf("main方法内, x=%d\n", x);
        fn1();
        return 0;
    }


  • 喜欢海其实是喜欢浪
    2016-02-16 17:40:27

    #include <stdio.h>

    int x = 77;

    void fn1()

    {

        printf("fn1(): x=%d\n", x);       

    }

    int main()

    {

        int x = 10;

        if(x>0)

        {

            int x = 100;

            x /= 2;

            printf("if语句内, x=%d\n", x);       

        }

        printf("main方法内, x=%d\n", x);

        fn1();

        return 0;

    }


  • 京东塔和西瓜子i
    2015-12-04 16:27:43

    全写X的话  输出的结果就是 50  50  77

    56614e540001f17e04760318.jpg

    56614e7a0001c52803610125.jpg


  • 一毛钱
    2015-12-04 16:14:45

     int x1= 10;
        if(x1>0)

    这块有问题 你应该写成x 不应该写成x1,这块是考全局变量和局部变量的