;) 结尾,并按照在程序中出现的顺序执行。;) 结尾的单个指令,或者是复合语句。复合语句是由一组语句(每个语句都以自己的分号结尾)组成的,但它们都被包含在一个用花括号 {} 括起来的代码块中。{ statement1; statement2; statement3; } if 关键字用于在条件满足时执行语句或代码块,仅在此情况下执行。其语法是:if (condition) statement condition 是正在被评估的表达式。如果此 condition 为真,则执行 statement。如果为假,则不执行 statement(仅忽略),程序将继续执行整个选择语句之后的代码。x 变量的值确实是 100 时才打印消息 (x is 100)。 |
|
x 不等于 100,则忽略此语句,不打印任何内容。{}) 中,形成一个代码块。 |
|
|
|
if 的选择语句也可以通过使用 else 关键字引入替代语句来指定在条件不满足时会发生什么。其语法是:if (condition) statement1 else statement2
statement1;否则,执行 statement2。 |
|
x is 100;如果不是,则打印 x is not 100。 |
|
{} 括起来的代码块中来执行每个情况下的多个语句。while、do 和 for 引入。while (expression) statement
expression 为真时重复执行 statement。如果在执行 statement 之后,expression 不再为真,则循环结束,程序将继续执行循环之后的代码。例如,让我们来看一个使用 while 循环的倒计时: |
|
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, liftoff! |
main 中的第一条语句将 n 设置为 10。这是倒计时中的第一个数字。然后 while 循环开始:如果此值满足条件 n>0(即 n 大于零),则执行条件后的代码块,并只要条件 (n>0) 保持为真,就重复执行。main 开始)来解释:n 被赋值while 条件 (n>0)。此时有两种可能性: cout << n << ", ";
--n;
(打印 n 的值并将 n 减 1)liftoff! 并结束程序。--n,它将条件中被评估的变量 (n) 的值减一——这将在一定次数的循环迭代后,最终使条件 (n>0) 变为假。更具体地说,在 10 次迭代后,n 变为 0,使条件不再为真,while 循环也随之结束。sleep_for 以了解带有延迟的倒计时示例)。do statement while (condition);
condition 是在 statement 执行之后而不是之前评估的,这保证了 statement 至少执行一次,即使 condition 从未满足。例如,以下示例程序会回显用户输入的任何文本,直到用户输入 goodbye 为止。 |
|
Enter text: hello You entered: hello Enter text: who's there? You entered: who's there? Enter text: goodbye You entered: goodbye |
statement 需要至少执行一次时,通常首选 do-while 循环,例如当用于结束循环的条件在循环语句本身内部确定时。在前面的示例中,代码块内的用户输入将决定循环是否结束。因此,即使用户希望尽快结束循环(通过输入 goodbye),循环中的代码块也至少需要执行一次来提示输入,并且实际上,只有在执行后才能确定条件。for 循环旨在迭代一定次数。其语法是:for (initialization; condition; increase) statement;
condition 为真时重复执行 statement。但是,for 循环还提供了特定的位置来包含 initialization 和 increase 表达式,它们分别在循环第一次开始之前和每次迭代之后执行。因此,使用计数器变量作为 condition 特别有用。initialization。通常,这会声明一个计数器变量,并将其设置为某个初始值。这只在循环开始时执行一次。condition。如果为真,循环继续;否则,循环结束,并跳过 statement,直接转到步骤 5。statement。与往常一样,它可以是单个语句,也可以是包含在花括号 { } 中的代码块。increase,然后循环回到步骤 2。 |
|
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, liftoff! |
for (;n<10;) 是一个没有 *initialization* 或 *increase* 的循环(相当于 while 循环);for (;n<10;++n) 是一个有 *increase* 但没有 *initialization* 的循环(可能因为变量在循环之前已被初始化)。没有 *condition* 的循环等同于以 true 作为条件的循环(即无限循环)。,):此运算符是表达式分隔符,可以在通常只期望一个表达式的地方分隔多个表达式。例如,使用它,for 循环可以处理两个计数器变量,同时初始化和增加它们: |
|
n 或 i 在循环中未被修改,此循环将执行 50 次。
n 从 0 开始,i 从 100 开始,条件是 n!=i(即 n 不等于 i)。由于每次迭代 n 增加一,i 减少一,因此在第 50 次迭代后,当 n 和 i 都等于 50 时,循环的条件将变为假。for ( declaration : range ) statement;
range 中的所有元素,其中 declaration 声明一个变量,该变量可以存储此范围中某个元素的值。范围是元素的序列,包括数组、容器以及任何支持 begin 和 end 函数的类型;本教程中尚未介绍这些类型中的大多数,但我们已经熟悉了至少一种范围:字符串,它们是字符序列。 |
|
[H][e][l][l][o][!] |
:) 前面是 char 变量的声明(字符串中的元素是 char 类型)。然后,我们在语句块中使用该变量 c 来表示范围中每个元素的值。auto 进行类型推导来确定元素的类型。通常,上面的基于范围的循环也可以这样写: |
|
c 的类型是从 str 的元素类型自动推导出来的。break 语句会退出循环,即使循环的结束条件尚未满足。它可用于结束无限循环,或强制循环在其自然结束之前终止。例如,让我们在自然结束之前停止倒计时: |
|
10, 9, 8, 7, 6, 5, 4, 3, countdown aborted! |
continue 语句会导致程序跳过当前迭代中循环的其余部分,就好像已到达语句块的末尾一样,使其跳转到下一次迭代的开头。例如,让我们在倒计时中跳过数字 5: |
|
10, 9, 8, 7, 6, 4, 3, 2, 1, liftoff! |
goto 允许程序跳转到程序的另一个绝对点。这种无条件跳转会忽略嵌套级别,也不会导致任何自动堆栈展开。因此,这是一项需要谨慎使用的功能,最好在同一语句块内使用,尤其是在存在局部变量的情况下。goto 语句的参数。*标签* 由一个有效的标识符后跟一个冒号 (:) 组成。goto 通常被认为是一种低级功能,在现代 C++ 使用的高级编程范例中没有特别的用例。但是,仅作为示例,这里有一个使用 goto 的倒计时循环版本: |
|
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, liftoff! |
if-else 语句,但仅限于常量表达式。其最典型的语法是:code>switch (expression)
{
case constant1:
group-of-statements-1;
break;
case constant2:
group-of-statements-2;
break;
.
.
.
default:
default-group-of-statements
} /code>
switch 评估 expression 并检查它是否等于 constant1;如果等于,则执行 group-of-statements-1,直到找到 break 语句。当找到该 break 语句时,程序将跳转到整个 switch 语句的末尾(结束花括号)。constant1,则会将其与 constant2 进行比较。如果相等,则执行 group-of-statements-2,直到找到 break,此时将跳转到 switch 的末尾。default: 标签之后的语句(如果存在,因为它是可选的)。| switch 示例 | if-else 等效项 |
|---|---|
code>switch (x) {
|
code>if (x == 1) { |
switch 语句的语法有些特殊,这是从早期 C 编译器继承下来的,因为它使用标签而不是代码块。在最典型的用法(如上所示)中,这意味着需要为每个标签后面的语句组添加 break 语句。如果省略 break,则会继续执行 case 后面的所有语句(包括其他标签下的语句),直到 switch 代码块结束或遇到跳转语句(如 break)。x is 2)。它将继续这样做,直到遇到 break 语句或 switch 代码块的末尾。这使得为每个 case 的语句包含在花括号 {} 中成为不必要的,并且也可以用于为不同的可能值执行相同的语句组。例如: |
|
switch 仅限于将其评估的表达式与常量表达式的标签进行比较。不能使用变量作为标签或范围,因为它们不是有效的 C++ 常量表达式。if 和 else if 语句的串联。基本输入/输出 | 目录 | 函数 |