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

我觉得原始的就对呀? 哪里错了?求指导,谢谢!

#include <stdio.h>

int x = 77;

void fn1()

{

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

}

int main()

{

    int x = 10;

    if(x>0)

    {

        x = 100;

        x /= 2;

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

    }

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

    fn1();

    return 0;

}


提问者:十先生Shan 2015-10-29 22:21

个回答

  • daoer
    2015-10-30 14:31:19
    已采纳

    要求“main方法内,x=10”,你执行下来,结果实际是“main方法内,x=50”(已经经过了if的运算)。所以通过不了。

  • 不加班
    2015-10-31 11:09:24

    你这个程序是没有问题的,但是你又说有错误,那么,你就要将你的问题描述清楚:比如说,你编写这个程序要想实现什么功能,要求要有什么效果之类的,出了错误,如果编译器有提示,要给出错误提示。这样才好根据你的提问去回答你的问题。如果你的提问模糊不清,别人就不知道怎么回答,你也得不到你要的答案。


    通过你这个程序,我猜测你的问题是想问main函数外的x变量和main函数内的变量的值为什么不一样是么

    在c语言中如果全局变量和局部变量的变量名相同,那么局部变量就会屏蔽全局变量。

    就像你这个程序,在main函数内的变量x就屏蔽了main外的全局变量x,在main函数内打印的变量x的值就是main函数内的局部变量x的值(50);而fn1函数打印出来的变量x就是全局变量(77)

  • 心悦君夕
    2015-10-30 10:12:12

    左侧任务中有不会了怎么办,里面有源码提示