第 3 部分 控制成分

目前你已经掌握了 C++ 最基本的运算成分,你现在可以让计算机执行你想要执行的运算过程了。那么如何去控制运算的流程就是接下来我们需要学习的。

控制成分是很关键的,因此我们在第一章学习了最基础的控制:分支循环。同时,我们还默许了一件事情,就是计算机执行代码的时候是从上到下一行一行走的,这个称为按顺序执行。

事实上,对于你目前接触到的任何程序来说,它的逻辑都可以用这三种结构——顺序、分支和循环——来表达。这是在 1996 年被证明的事实。因此接下来我们将逐一系统地讲解这三种结构。

“你目前所接触到的程序”意思是指“单入口、单出口”的程序。

在此之前,需要介绍控制成分最基础的概念——语句。

语句

语句(Statement)是指定 C++ 程序执行什么样的任务的程序片段。你其实已经见过许多语句了,并完整地学过一种语句叫声明语句

分号结尾的程序片段大多都是语句。接下来我们来看一下你已经见过的语句:

声明语句

声明语句可以指定程序声明并定义一个变量。(将来你会学到声明语句的其它用法。)关于已经学过的部分,请参见第 1 部分的讲解。例如:

int a{42}, b{56};

表达式语句

表达式语句(Expression statement)指定程序执行运算。比如:

a = b + 20;

这里面 a = b + 20 是一个表达式。这个表达式的含义我们已经清楚了,它是赋值表达式,可以给变量 a 赋一个值。但是要想让计算机执行这个过程,需要通过表达式语句的形式给它写出来。表达式语句的写法也很简单,直接在后面加上一个分号 ; 就可以指定计算机取执行这段表达式所表达的运算了。

下面这张图解释了表达式和表达式语句的关系:

Expression statement

表达式语句中的表达式是可选的。没有表达式的表达式语句称为空语句

输入输出语句……?

cin >> 开头的,; 结尾的一串东西可以是指定计算机从用户读取输入,这件事情我们在第一章已经接触了。同样,以 cout << 开头的,; 结尾的可以输出一些东西。这两样都是 ; 结尾,那么聪明的你一定猜到了它们也是语句的一种。没错,正是如此;我们一直用于输入输出的那种写法确实是语句,而且是表达式语句的一种形式。那为啥是表达式语句呢?这件事情我们会留到后面再详细讲解。

分支语句和循环语句

第一章中的 if (...) {...}while (...) {...} 也是语句,分别是分支语句和循环语句的一种。

那么这一套下来,你会发现我们从第一章到现在其实就是在搞各种语句的排列。就拿第一章最后的那个例子来看:

#include <iostream>
using namespace std;
int main() {
    int ans{42};                       // 声明语句
    int x{0};                          // 声明语句
    cin >> x;                          // “输入语句”(实际是表达式语句)
    while (x != ans) {                 // 循环语句开始
        if (x > ans) {                 // 分支语句开始
            cout << "bigger" << endl;  // “输出语句”(实际是表达式语句)
        }                              // 分支语句结束
        if (x < ans) {                 // 分支语句开始
            cout << "smaller" << endl; // “输出语句”(实际是表达式语句)
        }                              // 分支语句结束
        cin >> x;                      // “输入语句”(实际是表达式语句)
    }                                  // 循环语句结束
    cout << "right" << endl;           // “输出语句”(实际是表达式语句)
}

所以说语句是 C++ 控制成分的核心,也是它非常关键的原因所在。

最近更新:
代码未运行