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

对这个例子的自我理解

首先是全局变量

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 回答

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

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

自问自答

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

举报

0/150
提交
取消

对这个例子的自我理解

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