"While"循环和"do while"循环的区别

41

while循环和do-while循环有什么区别?我曾经认为两者完全相同。然后我看到了以下代码:

do {
        printf("Word length... ");
        scanf("%d", &wdlen);
    } while(wdlen<2);

这段代码完美地工作了。它打印出单词长度并扫描输入。但是,当我将其更改为

while(wdlen<2){
        printf("Word length... ");
        scanf("%d", &wdlen);
    } 

它给出了一个空白屏幕。它不起作用。因此,这两个循环之间存在某些功能差异。有人能解释一下吗?

除了这两个之间是否还有其他差异?


while循环在最初检查条件,然后执行...但是do-while即使条件为假也会执行至少一次。 - Raghu Srikanth Reddy
两者都是一样的糟糕,因为它们都没有检查 scanf() 的返回值。 - Nisse Engström
16个回答

0

while循环和do-while循环之间最重要的区别在于,在do-while循环中,即使给定的条件为假,代码块也会至少执行一次。

换句话说:

  • While-你的条件在循环块的开始处,并且可能永远不会进入循环。
  • 在While循环中,首先测试条件,然后如果测试结果为真,则执行代码块。

0

在 while 循环中,在执行语句之前测试条件。

在 do while 循环中,在循环内执行语句后测试条件。


1
你说得没错,但是回答这个问题可能有点晚了吧? - Nathan Tuggy
也许有点晚了,但我想用简短的回答来回答他的问题。 - BOUKERI Besmen

0

while 循环是在执行循环内的语句之前测试条件。

do while 循环是在循环内已经执行了一次语句后再测试条件。

来源:《让我们一起学C语言》


2
这个问题已经有3年历史并且已经有了答案...加1分为英雄。 - user1585121

0

可能 wdlen 的初始值大于等于2,因此在第二种情况下,循环条件最初为 false,循环不会执行。

在第二种情况下,在第一次检查 wdlen<2 条件之前,循环体将被执行,因此 printf/scanf 至少会执行一次。


大于2,我假设你的意思是? - Stephen
@Stephen:是的,已经更改了 :) - sth
嘿,很好地捕捉到了。你的更改实际上让我发现了我的答案中的一个错误(我曾经说过“它必须大于2”!),所以干杯;)。 - Stephen

0

在 WHILE 循环中,首先检查条件,然后执行程序。 在 DO-WHILE 循环中,首先至少执行一次程序,然后再检查条件。


2
6年太晚了,这个问题已经有12个答案了。 - hpm

0

do while (退出检查) 和 while (进入检查) 的区别在于,在进入 do while 循环时不会进行检查,而在进入 while 循环时会先进行检查。

例如:

程序 1:

int a=10;
do{
System.out.println(a);
}
while(a<10);

//here the a is not less than 10 then also it will execute once as it will execute do while exiting it checks that a is not less than 10 so it will exit the loop

程序2:

int b=0;
while(b<10)
{
System.out.println(b);
}
//here nothing will be printed as the value of b is not less than 10 and it will not let enter the loop and will exit

程序1的输出:

10

程序2的输出:

[没有任何输出]

注意:

如果我们将a=0和b=0赋值,并在相应的程序体中加入a++;和b++;,则程序1和程序2的输出将相同。


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