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

不懂,求解释!

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;

}


这里的x=100不是只在if语句中定义的吗?为什么会对if语句之外的printf语句产生影响?

而改成int x=100之后变成局部变量,作用范围只在if语句内。

正在回答

1 回答

最初声明的 x 的作用域是整个 main 函数,if 语句中修改的就是就是上面声明的 x 的值。如果 if 中又声明了一个 x,则重名的局部变量在小的作用域中有效,一旦回到外面,又是最初声明的 x 有效。

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

黄锋 提问者

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

举报

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

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

进入课程

不懂,求解释!

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