控制流简介
本节阅读量:程序运行时,CPU会从main()的顶部开始执行语句(默认情况下按顺序执行)。实际执行的语句序列称为程序的执行路径。
考虑以下程序:
|
|
该程序的执行路径按顺序包括第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)除外,我们将在未来的一章中专门讨论。
在本章之前,程序能做的事情相当有限。能够控制程序流程(特别是使用循环)后,许多有趣的事情都会变得可行!您将不再局限于编写玩具程序,而是能够编写真正有实用价值的程序。
这是真正的乐趣开始的地方。让我们开始吧!
本节目录