流程控制#

需求

学习使用 if、while、for 语句。

C++ 不仅仅可以按照顺序执行指令,还支持流程控制:循环和选择。

选择语句#

我们常常需要做选择题。

if 语句#

我们可以定义分段数学表达式:

\[\begin{split} y = \begin{cases} x * 7 & x < 0\\ x + 10 & x >= 0 \end{cases} \end{split}\]

首先,初始化变量:

double x {0}, y {0};

给定 x 的值,求取 y 的值:

x = - 4; // x 赋值为 负数
if (x < 0) // 条件
    y = x *7; // 当 if 条件满足,则执行此赋值语句
else
    y = x  + 10; // 当 if 条件为假,则执行此赋值语句

可以查看 y 的值:

y // 符合预期 x * 7
-28.000000
x = 5; // x 赋值为 非负数
if (x < 0) // 不满足条件
    y = x *7;
else  // 满足条件
    y = x  + 10; // 当 if 条件为假,则执行此赋值语句
y // 符合预期 x + 10
15.000000

下面的分段数学表达式:

\[\begin{split} y = \begin{cases} x * 7 & x < 0\\ x + 100 & x = 0\\ x + 10 & x > 0 \end{cases} \end{split}\]

使用 if-else 模式不够用了,需要换成 if-else if-else 模式。

x = 0;
if (x < 0)
    y = x *7;
else if (x == 0)
    y = x + 100;
else
    y = x  + 10; // 当 if 条件为假,则执行此赋值语句
y // 符合预期 x + 100
100.00000

如果有更多的条件分支,可以添加 else if 语句。

循环#

我们可以需要做一些重复性的工作,在 C++ 中反复执行一段代码的行为称为 循环 (repetition)或者 迭代 (iteration)。

while 语句#

求解数列的和:

\[ S = \sum_{x=1}^{10} x^2 \]
int S {0}; // 初始化 S 用于存储求和的结果
int x {0}; // 初始化 x 为 0
while (x <= 10) {
    S += x;
    ++x;
}
S // 符合预期
55

提示

while 的循环体一定要使用 {} 包裹。

for 语句#

上面的数学求和也可以写作:

int S {0}; // 初始化 S 用于存储求和的结果
for (int x {0}; x <= 10; ++x)
    S += x
S // 符合预期
55

关于运算符 ==#

  1. 由运算符 == 组成的表达式一定要使用 () 起来包裹起来。(避免出现歧义)。

  2. (x == y) 可以理解为隐式类型转换。

  3. 可以使用强制类型转换 {x == y} 表示真值判断表达式。