1. while 循环
C++
中while
循环的语法:
while(condition){statement(s);}
2. for 循环
2.1 典型 for 循环
C++
中for
循环的语法:
for ( init; condition; increment ){statement(s);}
下面是 for 循环的控制流:
init
会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。接下来,会判断condition
。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着for
循环的下一条语句。在执行完for
循环主体后,控制流会跳回上面的increment
语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for
循环终止。
2.2 C++11 新 for 循环
C++11
引入了一种新的for
循环,让对一系列值(如数组包含的值)进行操作的代码更容易编写和理解。
基于范围的for
循环也使用关键字for
:
for (VarType varName : sequence){// dosomething}
通过使用关键字auto
来自动推断变量的类型,可编写一个通用的for
循环,对任何类型的数组elements
进行处理,从而进一步简化前面的for
语句:
for (auto anElement : elements) {cout << "Array elements are " << anElement << endl;}
使用示例:
int main(){int a[] = {0,1,2};for(int i: a){cout << "i is " << i << endl;}cout << "#############"<< endl;for(int &j: a){cout << "j is " << j << endl;}cout << "#############"<< endl;for(auto k: a){cout << "k is " << k << endl;}}
3. do…while 循环
do...while
循环与while
循环类似,但是do...while
循环会确保至少执行一次循环。
C++
中do...while
循环的语法:
do{statement(s);}while( condition );
4. 嵌套循环
4.1 嵌套 for 循环
C++
中 嵌套for
循环 语句的语法:
for ( init; condition; increment ){for ( init; condition; increment ){statement(s);}statement(s); // 可以放置更多的语句}
4.2 嵌套 while 循环
C++
中 嵌套while
循环 语句的语法:
while(condition){while(condition){statement(s);}statement(s); // 可以放置更多的语句}
4.3 嵌套 do … while 循环
C++
中 嵌套do...while
循环 语句的语法:
do{statement(s); // 可以放置更多的语句do{statement(s);}while( condition );}while( condition );
5. 循环控制语句
5.1 break
C++
中break
语句有以下两种用法:
当break
语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。它可用于终止switch
语句中的一个case
。
C++
中break
语句的语法:
break;
5.2 continue
C++
中的continue
语句会跳过当前循环中的代码,强迫开始下一次循环。
对于for
循环,continue
语句会导致执行条件测试和循环增量部分。对于while
和do...while
循环,continue
语句会导致程序控制回到条件测试上。
5.3 goto
goto
语句允许把控制无条件转移到同一函数内的被标记的语句。
注意:在任何编程语言中,都不建议使用goto
语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用goto
语句的程序可以改写成不需要使用goto
语句的写法。
C++
中goto
语句的语法:
goto label;...label: statement;
在这里,label
是识别被标记语句的标识符,可以是任何除C++
关键字以外的纯文本。标记语句可以是任何语句,放置在标识符和冒号(:
)后边。
goto
语句一个很好的作用是退出深嵌套例程:
for(...) {for(...) {while(...) {if(...) goto stop;...}}}stop:cout << "Error in program.\n";
6. 无限循环
无限while
循环类似于下面这样:
while(true)// while expression fixed to true{DoSomethingRepeatedly;}
无限do...while
循环类似于下面这样:
do{DoSomethingRepeatedly;} while(true);// do...while expression never evaluates to false
而无限for
循环类似于下面这样:
for (;;){DoSomethingRepeatedly;}