为了账号安全,请及时绑定邮箱和手机立即绑定

局部与全局

这里的printf("main方法内, x=%d\n", x);输出的为啥不是10,为啥是50呢??


正在回答

2 回答

#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;
}

看看代码我们知道了啊.

因为在main()中重新定义了x变量位10.

然后在

if(x>0)
{
    x = 100;
    x /= 2;
    printf("if语句内, x=%d\n", x);       
}

中是没有重新定义x变量,而是给x变量赋予了新值100.

x = 100;

看到没.是赋值.而不是定义.而后

x /= 2;

也就是50了.在后面的输出自然是50.

0 回复 有任何疑惑可以回复我~
#1

逆水中的鱼 提问者

非常感谢!
2015-08-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       924497    人
  • 解答问题       20758    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

局部与全局

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信