变量的性质与变量的循环

img


为什么t=7后还要加一个5
我同学说t值跳出if else循环后值依然为7但是a的值变回了5,所以为什么跳出循环以后t值不变为0而a值变成了5,希望有人解答,谢谢。

因为t是在if else外面定义的,而a在if else内有一个局部变量,在调用变量时,使用最近局部变量的值,而局部变量在定义语句结束时会释放

题目考点:变量的作用域,简单点说,就近原则
哪个离当前 {} 花括号更近,操作的就是哪个

f 函数里面,先申明了两个变量 int t = 0, a = 5;
进入条件语句后,if 分支、else 分支都再次申明了变量 a,由于变量同名都叫做 a

在 if 和 else 循环里面 实际操作的对象 a 不是外层申明的 a,而是新申明的 a
无论怎么操作 f 函数入口的 a 都不会发生变化

if 和 else 里面并没有再次申明 t,里面的操作会影响到 f 函数入口申明的 t

所以在条件判断结束之后,t 受到了影响 a 并没有受到影响

如有帮助,望点击我回答右上角【采纳】按钮支持一下