章节目录

控制流简介

本节阅读量:

当程序运行时,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语句与代码块

下一节