对这个例子的自我理解

来源:5-10 局部与全局

喵星人9527

2017-10-12 16:10

首先是全局变量

int x=77;

接着是空函数void fn1()里的x,这里先把它看成x1

再,主函数里,int x=10;定义局部变量x,此局部变量x只在主函数里有效,先把它看成x2,

进入if函数,if函数内,再次,定义局部变量int x=100;这个x只在if内有效,if函数外是一个输出语句,要求输出main方法的x,也就是刚看成x2那个,此时输出结果应该是x=10了,再,接着fn1()函数,进入fn1()函数,输出x就是x1了,也就是全局变量,因为fn函数没有定义x,所以fn函数使用全局变量int x=77。这里说下if中(x>0)这个x,是主函数的局部变量int x=10

然后,如果if中x没有定义,即“x=100;x/=2;”这里系统理解为x赋值为100,运算后得到x值=50,而这个x就是定义的局部变量int x=10;的值,也就解释了为啥下一句输出语句会输出x=50了


写回答 关注

2回答

  • 喵星人9527
    2017-10-12 16:15:42

    所以if函数中要定义x,不然x只是被赋值,从而影响下面的输出语句

  • 喵星人9527
    2017-10-12 16:10:54

    自问自答

C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题