blog.dopana

Back

C++入门系列第三篇。程序通常从上到下执行,但真实程序需要判断和重复。

if 和 else#

int score = 85;

if (score >= 90) {
    std::cout << "Grade: A\n";
} else if (score >= 70) {
    std::cout << "Grade: B\n";
} else {
    std::cout << "Grade: C\n";
}
cpp

条件必须是布尔表达式。用 && 表示与、|| 表示或、! 表示非。始终用花括号包裹代码块——可以防止之后添加代码时出错。

switch#

当有大量离散值需要判断时,switch 比一长串 else if 更清晰:

switch (day) {
    case 1:
        std::cout << "Monday\n";
        break;
    case 2:
        std::cout << "Tuesday\n";
        break;
    default:
        std::cout << "Weekend\n";
        break;
}
cpp

break 防止穿透(fall-through)。忘记它是C++的经典错误。

while 和 do-while#

int n = 3;
while (n > 0) {
    std::cout << n << " ";
    --n;
}
// 输出: 3 2 1
cpp

while 先检查再执行。do-while 至少执行一次:

int n;
do {
    std::cout << "Enter a positive number: ";
    std::cin >> n;
} while (n <= 0);
cpp

for 循环#

for 把初始化、条件和步进整合在一起:

for (int i = 0; i < 5; ++i) {
    std::cout << i << " ";
}
// 输出: 0 1 2 3 4
cpp

范围 for 循环#

遍历容器最简单的方式是范围 for 循环:

std::vector<int> v{10, 20, 30};
for (int x : v) {
    std::cout << x << " ";
}
cpp

break 和 continue#

  • break 立即退出循环。
  • continue 跳过当前迭代的剩余部分,进入下一次迭代。
for (int i = 0; i < 10; ++i) {
    if (i % 2 == 0) continue;   // 跳过偶数
    if (i > 7) break;           // 到 9 停止
    std::cout << i << " ";
}
// 输出: 1 3 5 7
cpp

结论#

条件语句选择路径,循环语句重复执行。两者结合,把线性代码变成真正的逻辑。本系列下一篇:函数。

参考资料#