While、do while 和无限循环


2022 年 8 月 19 日, Learn eTutorial
2362

之前的教程中,我们学习了C++ 循环的基本概念和详细的For 循环

在学习 for 循环时,我们发现循环次数是预先知道的,也就是说,我们知道循环体必须执行多少次。While 循环在不知道确切循环次数时使用。循环的执行基于测试条件的终止。

在 C++ 编程语言中,while 循环是另一个主要的循环结构。while 循环接受一个逻辑表达式,并根据逻辑表达式的验证来执行循环。如果表达式或条件为真,则执行其中的代码块,否则将不执行。

while 也是表示基本控制流结构的保留字。

While 循环的语法

如前所述,循环由三个语句组成:初始化表达式、测试表达式和更新表达式。for、while 和 do while 这三种循环的语法主要区别在于这三个语句的放置顺序。
 


initialization expression;
while (test_expression)
{
   // statements
 
  update_expression;
}

 
  • while 循环计算test_expression
  • 如果test_expression求值为 true,则执行 while 循环内的代码。
  • 再次评估test_expression
  • 此过程持续进行,直到test_expressionfalse
  • test_expression求值为 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

While 循环的流程图

C++ : While Loop

演示 while 循环的 C++ 程序示例

示例 1:显示文本 5 次


#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 循环中,循环执行也基于测试条件终止。do-while 循环与 while 循环的主要区别在于 do-while 循环中的条件在循环体末尾进行测试,而其他两个循环是入口控制循环。

在 do-while 循环中,无论测试条件如何,循环体至少会执行一次。

do .. while 循环的语法


initialization expression;
do
{
   // statements

   update_expression;
} while (test_expression);
 

do .. while 循环的流程图

C++ : do .. while Loop

演示 do while 循环的 C++ 程序

示例 1:显示文本 


// 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。但是,由于循环是出口控制的,它的主体只会执行一次。

无限循环的概念呢?

无限循环(也称为无尽循环)是一段没有功能性出口的代码,因此会无限重复。当一个条件始终评估为真时,就会发生无限循环。这通常是一个错误。

使用 for 和 while 演示无限循环的 C++ 程序


#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.
……………………………………………….
………………………………………………….

示例 2:使用 while 循环演示无限循环的 C++ 程序


#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.
……………………………………………….
………………………………………………….

示例 3:使用 do while 循环演示无限循环的 C++ 程序


#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.
……………………………………………….
………………………………………………….