C++中while和do while的区别是什么?

7

我希望有人能够解释一下C++中while和do while的区别。

我刚开始学习C++,使用以下代码时,似乎得到了相同的输出:

int number =0;

while (number<10)
{
cout << number << endl;
number++
}

并且这段代码:

int number=0;

do
{
cout << number << endl;
number++
} while (number<10);

这两个计算的输出结果相同,因此似乎没有区别。

我尝试寻找其他例子,但它们看起来太难理解了,因为它们包含了我还没有学过的数学内容和其他东西。此外,我的书对我的问题给出了一种奇怪的答案。

有没有更简单的例子来展示这两个循环之间的区别?

我非常好奇。


3
提示:如果您从int number = 11开始会发生什么? 如果您从int number = 11开始,将创建一个名为“number”的整数变量,并将其初始化为11。 - Paul Roub
4个回答

11
while 循环首先评估 number < 10 ,然后执行循环体,直到 number < 10 变为 falsedo-while 循环执行循环体,然后评估 number < 10,直到 number < 10 变为 false
例如,以下代码输出为空:
int i = 11;

while( i < 10 )
{
    std::cout << i << std::endl;
    i++;
}

但是这将打印 11:
int j = 11;

do
{
    std::cout << j << std::endl;
    j++;
}
while( j < 10 );

1
还有一些需要考虑的事情;while保证至少对条件进行一次评估,而do...while则不是(您可以使用breakcontinue)。 - Qix - MONICA WAS MISTREATED

10
while循环是一种入口控制循环,即它首先检查while(condition){ ...body... }中的条件,然后执行循环的主体并重复该过程,直到条件为false为止。 do while循环是一种出口控制循环,即在执行了循环主体后才会在do{...body...}while(condition)中检查条件(do while循环中的主体总是至少执行一次),然后再次循环主体,直到条件为false为止。
希望这有所帮助 :)
例如: 在while循环的情况下,当1不小于1时,什么也不会打印,因为条件失败并退出循环。
int n=1;
while(n<1)
    cout << "This does not get printed" << endl;

而在do while的情况下,语句会被输出,因为它现在还不知道条件是什么,直到执行主体至少一次后才会停止,因为条件不满足。

int n=1;
do
   cout << "This one gets printed" << endl;
while(n<1);

1
非常感谢,我现在觉得我理解了,但我认为还需要另一个例子来展示区别,不需要计算,谢谢! - Kahn Kah

2

如果您考虑使用不同的起始值,您可以更清楚地看到差异:

int number = 10;

while (number<10)
{
    cout << number << endl;
    number++
}
// no output

在第一个示例中,条件立即失败,因此循环不会执行。然而,在第二个示例中,由于条件在循环代码之后才被测试,所以你将得到一次迭代。
int number = 10;

do
{
    cout << number << endl;
    number++
}
while (number<10);
// output: 10

0

当条件满足时,while循环才会执行。而do while循环将在第一次执行时执行,而不验证条件,直到初始执行之后。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接