因为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 并没有受到影响
如有帮助,望点击我回答右上角【采纳】按钮支持一下