章末演练:程序是怎么想的——变量的诞生与消失
本课用一个"总分与平均分"程序复盘整章:{} 初始化、int 求和、除以 3.0 保住小数、
bool 装判断结果。在 CppStudio 里完整播放一遍,看变量逐个诞生、变化、
在程序结束时一起消失。
演练程序
int chinese{88};
int math{95};
int english{91};
int total{chinese + math + english};
double average{total / 3.0};
bool passed{average >= 60};
一个程序串起整章知识点:{} 初始化(第 13 课);total 用 int 装整数和(第 8 课);average 除以 3.0 而不是 3——total 是 int,除以 int 会丢掉小数(整数除法,第 8 课的坑在这里回收);passed 用 bool 装比较结果(第 10 课)。
程序是怎么想的
本章的固定栏目,用运行模型复盘:
- 诞生:变量在定义语句执行时诞生,一个个出现在监视区——先三门成绩,再 total,再 average,最后 passed;
- 读取与计算:
total / 3.0执行时,从 total 读出 274,与 3.0 做小数除法得到 91.333…,存入 average; - 判断:
average >= 60算出 true,passed 为真,输出区显示 1(第 10 课的显示规则); - 消失:执行 return 0,main 结束,监视区所有变量一起消失——变量的生命周期与它的花括号范围绑定。
变量不是一直都在的:它在定义时诞生,在离开花括号时消失。这条规则到函数章会看到更完整的形态——每个函数有自己的一套变量,随调用而生、随退出而灭。
可视化观察
在 CppStudio 中打开本课示例,从头完整播放一遍:
- 监视区里变量逐个登场,最后定格在 6 行(含 passed);
- 重点暂停在
total / 3.0:把 3.0 改成 3 再跑一遍,平均分从 91.333… 变成 91——整数除法的代价一眼可见; - 播放结束瞬间,监视区清空——这就是"变量的消失"。
自测
- 把任何一门成绩改成带小数,程序哪里要跟着改?(提示:int 装不下小数)
- 想保留两位小数输出,可以用什么思路?(提示:先放大一百倍取整)
- 把 passed 的判断改成"三门都及格",需要用到什么?(预告:逻辑运算符,运算符章见)
下一章:常量——用 const 和字面量后缀,把"不该变的值"锁起来。
▶ 运行本课示例 弹窗里直接跑,流程图同步展开;也可新窗口打开
常见问题
计算平均分为什么要除以 3.0 而不是 3?
total 是 int,除以 int 会触发整数除法丢掉小数(第 8 课)。除以 3.0 让结果成为 double,平均分才带小数部分。
变量在内存里什么时候消失?
离开它所在的花括号范围就消失。本课所有变量定义在 main 的花括号内,main 结束、程序终止时它们一起消失。作用域的完整规则在函数章展开。
这一章学完后应该具备什么能力?
能定义并初始化各种类型的变量,知道 int 与 double 的差别和陷阱,会读监视区里变量值的每一步变化,能用 {} 写出规范的初始化。