C++ 控制流:条件与循环
控制流决定程序执行路径。
条件判断
if (score >= 60) {
pass();
} else {
retry();
}
if 的条件必须能转换为布尔值。
switch
switch (op) {
case '+':
add();
break;
case '-':
sub();
break;
default:
unknown();
}
不要忘记 break,否则会继续执行后面的分支。
循环
for (int i = 0; i < n; ++i) {
work(i);
}
遍历容器时更推荐范围 for:
for (const auto& item : items) {
use(item);
}
分支不要写得太深
实际项目里,控制流最大的问题不是不会写 if,而是嵌套太深后读不懂。比如连续三四层 if 会让人很难判断某个变量在当前分支下到底满足什么条件。我的习惯是尽量使用提前返回:
bool valid(User user) {
if (!user.active) return false;
if (user.name.empty()) return false;
if (user.age < 0) return false;
return true;
}
这样代码从上往下读,失败条件一目了然。
循环里的边界
循环最容易出错的是边界。i < n 和 i <= n 只差一个等号,但结果可能是数组越界。写循环前先用自然语言说清楚:“我要访问哪些下标?”如果答案是 0 到 n - 1,那么条件通常就是 i < n。
小练习
写一个程序统计数组里的最大值、最小值和平均值。要求分别用普通 for 和范围 for 写一遍,对比两种写法的可读性。
评论
...正在读取评论。