教程5

判断语句

if 语句

基本格式
```cpp if (condition) statement(s);//单个语句 ```

或者

if (condition) statement(s);//单个语句
else statement(s);//单个语句

或者

if (condition)
{
    statement(s);
}
else
{
    statement(s);
}

(当然其中只有一个是语句块也是可以的)

解释
直接当英语理解即可。
特别的用法
if (a) 可以用于判断 $a \not = 0$。

if (!a) 可以用于判断 a = 0 a=0 a=0

if 之间可以随意嵌套。

switch 语句

基本格式
```cpp switch (expression) { case constant-expression : statement(s); break; // 可选的 case constant-expression : statement(s); break; // 可选的 // 您可以有任意数量的 case 语句 default : // 可选的 statement(s); } ```
规则跟解释
- switch 语句中的 expression 必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型。 - 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。 - caseconstant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。 - 当被测试的变量等于 case 中的常量时, case 后跟的语句将被执行,直到遇到 break 语句为止。 - 当遇到 break 语句时, switch 终止,控制流将跳转到 switch 语句后的下一行。 - 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。 - 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。 default case 可用于在上面所有 case 都不为真时执行一个任务。 default case 中的 break 语句不是必需的。

上面讲的比较清楚,就补充几点:

  1. 枚举类型用处不多,所以前面没有讲,可以忽略。
  2. 注意 break 的含义,没有 break 的话就是可以同时满足之后的条件。
  3. 此处的 statement(s);break; 本身就是一个代码块,不需要特别的大括号,同理也可以进行 switch 的嵌套。
  4. 特别的,可以使用如下用法使得多个 case 进行同一个代码块的执行:
switch (x)
{
    case 1:
    case 2:
        cout<<x<<endl;
        break;
}

循环语句

while 语句

基本格式
```cpp while (condition) { statement(s); } ```

同样也可以:

while (condition) statement(s);//单个语句
解释
if 语句基本差不多,就是在 condition 为真不断执行后面的语句(块)。
一种死循环
```cpp while (1) { statement(s); } ```

for 语句

基本格式
```cpp for (init;condition;increment) { statement(s); } ```
规则跟解释
下面是 for 循环的控制流:
  1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
  2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
  3. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
  4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

上面也是讲的很好,我这里通过一种 while 语句的不完全等价(原因见后)变形理解:

init;
while (condition)
{
    statement(s);
    increment;
}

除此之外,注意 init;condition;increment 三个语句均可留空。

一种死循环
```cpp for (;;) { statement(s); } ```

do...while 语句

基本格式
```cpp do { statement(s); }while (condition); ```
解释
其实跟 while 的区别就是先判断,还是先执行。

一种等价变形就是:

statement(s);
while (condition)
{
    statement(s);
}

同样也有相似的死循环方式。

循环控制语句

break 语句
除了在 switch 中使用外, break 还可以用于跳出循环。

但是注意,break 只能跳出最内层的循环。

也就是说:

while (condition1)
{
    //do something...
    while (condition2)
    {
        //do something...
        break;
    }
    //do something...
}

这里的 break 只能跳出 while (condition2) 这个循环。

continue 语句
break 语句类似的是, continue 也会跳过当前正在进行的循环,但它接下来会继续下一次循环。

对于 for 语句,continue 语句会执行 incrementcondition 的判断。

对于 whiledo…while 语句来说,continue 会执行 condition 的判断。

从这点上可以看出 forwhile 的一点区别。

goto 语句
```cpp goto label; .. . label: statement; ```

goto 的含义应该就跟你所想的基本一样。

但这个看似强大的语句实际上十分不建议使用。

不仅是因为它往往能被其他语句替代,更是因为使用它将使得程序的控制流难以追踪,可能会加大程序的难理解性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值