章节目录

控制流简介

本节阅读量:

程序运行时,CPU会从main()的顶部开始执行语句(默认情况下按顺序执行)。实际执行的语句序列称为程序的执行路径。

考虑以下程序:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <iostream>

int main()
{
    std::cout << "Enter an integer: ";
    
    int x{};
    std::cin >> x;

    std::cout << "You entered " << x << '\n';

    return 0;
}

该程序的执行路径按顺序包括第5、7、8、10和12行。这是一个无分支程序的例子。每次运行时,它都会采用相同的路径(以相同的顺序执行相同的语句)。

然而,这通常不是我们想要的。例如,如果程序要求用户输入,而用户输入了无效内容,理想情况下,我们希望让用户重新选择。这在无分支程序中是不可能的。事实上,用户可能会反复输入无效内容,因此在程序运行之前,我们无法确定需要让用户选择多少次。

幸运的是,C++提供了许多不同的控制流语句,允许程序员改变程序正常的执行路径。在前面,我们已经看过一个使用if语句的例子,它允许我们仅在条件表达式为true时执行某条语句。

当控制流语句导致执行点跳转到非顺序位置时,这称为分支。


控制流语句的类别

类别 样例 c++中的实现方式
条件 条件满足时,才执行对应语句 if, else, switch
跳转 CPU从其他位置开始执行 goto, break, continue
函数调用 跳到其他位置执行,处理完成后返回 function calls, return
循环 满足条件的情况下,重复执行一段代码0次或多次 while, do-while, for, ranged-for
停止 停止程序执行 std::exit(), std::abort()
异常 错误处理的一种特殊形式 try, throw, catch

在本章中,我们将详细介绍所有这些类别,异常处理(exceptions)除外,我们将在未来的一章中专门讨论。

在本章之前,程序能做的事情相当有限。能够控制程序流程(特别是使用循环)后,许多有趣的事情都会变得可行!您将不再局限于编写玩具程序,而是能够编写真正有实用价值的程序。

这是真正的乐趣开始的地方。让我们开始吧!


7.13 第七章总结

上一节

8.1 If语句与代码块

下一节