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;
}