break陈述
关键字 break 用于跳出 switch 陈述或跳出回圈。
以下程式示范switch陈述中使用break
#include <iostream>int main() {int data = 0;switch (data) {case 0:std::cout << "0" << std::endl;case 1: case 2:std::cout << "12" << std::endl;break;case 5:std::cout << "5" << std::endl;}return 0;
}
编译后执行,结果如下
$ g++ u0507_1.cpp
$./a.out 复制代码
0
12
$
此例在case 1、case 2之后使用break陈述
case 1: case 2:std::cout << "12" << std::endl;break;
由于0就符合选项,使得执行完case 0的部份后,由于这里没有break陈述,因此程式会继续执行底下所有的陈述,直到遇上break或到右大括弧为止。
以下程式示范在回圈中使用break
#include <iostream>int main() {int i;for (i = 0; i < 10; i++) {if (i == 5) {break;}std::cout << i << std::endl;}return 0;
}
编译后执行,结果如下
$ g++ u0507_2.cpp
$./a.out 复制代码
0
1
2
3
4
$
这里利用if判断控制变数i是否等于整数5,若是等于5就用break跳出for回圈,因此输出只有印到4为止。
continue陈述
关键字 continue可于回圈中暂停执行一次,然后进行下一轮。回圈碰到continue就像直接跳到回圈最后右大括弧的地方,接着重新进行回圈的结束条件测试,如果测试结果为真,那么回圈继续进行。
举例如下
#include <iostream>int main() {int i;for (i = 0; i < 10; i++) {if (i == 5) {continue;}std::cout << i << std::endl;}return 0;
}
编译后执行,结果如下
示例代码:
$./a.out 复制代码
0
1
2
3
4
6
7
8
9
$
此例在for回圈中测试控制变数i是否等于5,如果等于5就执行continue,因此印出结果中没有数字5。
使用continue需要留意控制变数的调整,我们将上例改用while回圈如下
#include <iostream>int main() {int i = 0;while (i < 10) {if (i == 5) {continue;}std::cout << i << std::endl;i++;}return 0;
}
由于控制变数i等于5的时候就会执行continue,但是continue之前没有调整控制变数值,结果造成i永远等于5,回圈结束条件永远为真
$ g++ u0508_2.cpp
$./a.out 复制代码
0
1
2
3
4
_
这造成一个无穷回圈(infinite loop) ,如同程式当掉不会结束执行,因此要利用按Ctrl + c或其他方式强制结束程式执行。