C++中,if语句中,赋值语句放在if语句块里面还是外面有什么不同?详细代码如下

2024-12-04 20:41:02
推荐回答(5个)
回答1:

if 用于判断,如果条件为真则执行分支语句,否则不执行。
{}表示一个局部范围。
你给出的题中,第一种情况 r=3 紧跟 int&r=*p;语句,自然都符合语法。

但是第二种情况,r 的定义int&r=*p在{}里,出了{}就无效了, r=3自然导致编译错误。
这是一个变量生命周期及作用域问题,希望对楼主有帮助。

回答2:

作用域的问题,你在if块里定义的变量的作用域就是那个块,出了那个块,那个变量就被释放了,不存在了。
所以你的赋值应该在块里。
如果要在块外赋值,你的变量定义就要在块外了

回答3:

if(p!=NULL)
{
int&r=*p;//开始定义了r
}//变量r被释放了
r=3;//r已经被释放,所以r不存在
这其实是一个作用域的问题。如果写出一个大于局部变量范围的变量就应该OK了

回答4:

变量r是在if块中申明的,if语句快执行完后r的空间已经释放,不存在r了,下面有又给r赋值,所以报错r未被申明,可以把r声明在if语句快的上面。

回答5:

{
int&r=*p;
}
在{}中定义的变量意思就是r是局部变量,局限在{}内使用,不能在{}之外使用!