判断语句
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 后跟一个要比较的值和一个冒号。 -
case 的
constant-expression 必须与
switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。 - 当被测试的变量等于
case 中的常量时,
case 后跟的语句将被执行,直到遇到
break 语句为止。 - 当遇到
break 语句时,
switch 终止,控制流将跳转到
switch 语句后的下一行。 - 不是每一个
case 都需要包含
break。如果
case 语句不包含
break,控制流将会
继续 后续的
case,直到遇到
break 为止。 - 一个
switch 语句可以有一个可选的
default
case,出现在
switch 的结尾。
default case 可用于在上面所有
case 都不为真时执行一个任务。
default case 中的
break 语句不是必需的。
上面讲的比较清楚,就补充几点:
- 枚举类型用处不多,所以前面没有讲,可以忽略。
- 注意
break的含义,没有break的话就是可以同时满足之后的条件。 - 此处的
statement(s);跟break;本身就是一个代码块,不需要特别的大括号,同理也可以进行switch的嵌套。 - 特别的,可以使用如下用法使得多个
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 循环的控制流:init会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。- 接下来,会判断
condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着for循环的下一条语句。 - 在执行完
for循环主体后,控制流会跳回上面的increment语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。 - 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,
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 语句会执行 increment 跟 condition 的判断。
对于 while 和 do…while 语句来说,continue 会执行 condition 的判断。
从这点上可以看出 for 跟 while 的一点区别。
goto 语句
```cpp goto label; .. . label: statement; ```goto 的含义应该就跟你所想的基本一样。
但这个看似强大的语句实际上十分不建议使用。
不仅是因为它往往能被其他语句替代,更是因为使用它将使得程序的控制流难以追踪,可能会加大程序的难理解性。
本文详细介绍了C++中的if、switch、while、for、do...while等控制流语句的基本格式及用法,并解释了break、continue和goto语句的作用。





