在之前的教程中,我们学习了C++ 循环的基本概念和详细的For 循环。
在学习 for 循环时,我们发现循环次数是预先知道的,也就是说,我们知道循环体必须执行多少次。While 循环在不知道确切循环次数时使用。循环的执行基于测试条件的终止。
在 C++ 编程语言中,while 循环是另一个主要的循环结构。while 循环接受一个逻辑表达式,并根据逻辑表达式的验证来执行循环。如果表达式或条件为真,则执行其中的代码块,否则将不执行。
while 也是表示基本控制流结构的保留字。
如前所述,循环由三个语句组成:初始化表达式、测试表达式和更新表达式。for、while 和 do while 这三种循环的语法主要区别在于这三个语句的放置顺序。
initialization expression;
while (test_expression)
{
// statements
update_expression;
}
while 循环计算test_expressiontrue,则执行 while 循环内的代码。false。false时,循环终止。示例
#while loop
int i=1
while(i<=10){
cout << i;
i++;
}
生成的输出是从 1 到 10 的数字序列。当迭代器变量 i 变为 10 时,执行终止。如果 i 进一步增加,条件将不满足。当 i=11 (i=10+1) 时,检查条件 (i<=10),其中 11 不小于 10。此时条件变为 FALSE,并退出循环。
[1] 1 [1] 2 [1] 3 [1] 4 [1] 5 [1] 6 [1] 7 [1] 8 [1] 9 [1] 10

#include <iostream>
using namespace std;
int main()
{
// initialization expression
int i = 1;
// test expression
while (i < 6)
{
cout << "learn eTutorials\n";
// update expression
i++;
}
return 0;
}
输出
Learn eTutorials Learn eTutorials Learn eTutorials Learn eTutorials Learn eTutorials
我们可以检查这个程序是如何工作的
| 迭代 | 变量 | i <= 5 | 操作 |
|---|---|---|---|
| 第 1 次 | i = 1 |
true |
打印Learn eTutorials并将 i 增加到 2。 |
| 第 2 次 | i = 2 |
true |
打印Learn eTutorials并将 i 增加到 3。 |
| 第 3 次 | i = 3 |
true |
打印Learn eTutorials并将 i 增加到 4。 |
| 第 4 次 | i = 4 |
true |
打印Learn eTutorials并将 i 增加到 5。 |
| 第 5 次 | i = 5 |
true |
打印Learn eTutorials并将 i 增加到 6。 |
| 第 6 次 | i = 6 |
false |
循环终止 |
在 do-while 循环中,循环执行也基于测试条件终止。do-while 循环与 while 循环的主要区别在于 do-while 循环中的条件在循环体末尾进行测试,而其他两个循环是入口控制循环。
在 do-while 循环中,无论测试条件如何,循环体至少会执行一次。
initialization expression;
do
{
// statements
update_expression;
} while (test_expression);

// C++ program to illustrate do-while loop
#include <iostream>
using namespace std;
int main()
{
int i = 2; // Initialization expression
do
{
// loop body
cout << "learn eTutorials\n";
// update expression
i++;
} while (i < 1); // test expression
return 0;
}
输出
Learn eTutorials
在上述程序中,测试条件 (i<1) 的结果为 false。但是,由于循环是出口控制的,它的主体只会执行一次。
无限循环(也称为无尽循环)是一段没有功能性出口的代码,因此会无限重复。当一个条件始终评估为真时,就会发生无限循环。这通常是一个错误。
#include <iostream>
using namespace std;
int main ()
{
int i;
// This is an infinite for loop as the condition
// expression is blank
for ( ; ; )
{
cout << "Learn etutorials.\n";
}
// This is an infinite for loop as the condition
// given in while loop will keep repeating infinitely
/*
while (i != 0)
{
i-- ;
cout << "Learn etutorials.\n";
}
*/
// This is an infinite for loop as the condition
// given in while loop is "true"
/*
while (true)
{
cout << "Learn etutorials.\n";
}
*/
}
输出
learn eTutorials. learn eTutorials. learn eTutorials. learn eTutorials. learn eTutorials. ………………………………………………. ………………………………………………….
#include <iostream>
using namespace std;
int main()
{
while (1)
cout << "learn eTutorials.\n";
return 0;
}
输出
learn eTutorials. learn eTutorials. learn eTutorials. learn eTutorials. learn eTutorials. ………………………………………………. ………………………………………………….
#include <iostream>
using namespace std;
int main() {
do{
cout << " Learn etutorials.\n";
} while(1);
return 0;
}
输出
learn eTutorials. learn eTutorials. learn eTutorials. learn eTutorials. learn eTutorials. ………………………………………………. ………………………………………………….