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

在if内x=100前面加int也该等于50才对啊请大佬帮忙解惑

在main内的x属于局部变量没错吧,
为什么在if内x=100前面没有添加int之前main的x等于50
添加int后为什么加了int后main内的x就等于10了
,没道理啊, main内的x是局部变量按道理if内的x有就是x=10的同一个变量,
在if内x=100前面加int也该等于50才对啊

if语句内, x=50
main方法内, x=10
fn1(): x=77


提问者:KooFung 2019-02-25 11:54

个回答

  • 慕无忌4501192
    2019-02-25 15:39:39
    已采纳

    代码块作用域主要靠 { }来区分.

    因此 if里面是一个作用域 ,在main里面 原本的x指向同一内存地址,只要是改变,x就会改变,后来加了int说明在if作用域重新开辟一个内存地址x,此时是另一个内存地址,main里面第一个x的内存地址由于命名相同被隐藏,不作用于if作用域中,但是作用于main之中,所以才会有了这种情况