“while”循环和“do while”循环之间的区别

时间:2010-09-02 09:27:01

标签: c loops

while循环和while循环之间有什么区别。我曾经认为两者完全相同。然后我遇到了以下一段代码:

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

此代码完美无缺。它打印字长和tascans输入。但是当我把它改成

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

它给出一个空白屏幕。它不起作用。因此两个循环之间存在一些功能差异。任何人都可以解释一下吗?提前谢谢。

编辑:这两个还有其他区别吗?

17 个答案:

答案 0 :(得分:55)

do while 循环在检查while条件之前执行一次循环内容。

while 循环将在执行内容之前首先检查条件。

在这种情况下,您正在等待用户输入scanf(),它将永远不会在 while 循环中执行,因为wdlen未初始化并且可能只包含可能大于2的垃圾值

答案 1 :(得分:18)

虽然:你的情况是在循环块的开头,并且永远不会进入循环

执行:您的条件位于循环块的末尾,并且必须至少进入一次循环

答案 2 :(得分:3)

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

do-while循环保证循环的执行至少一次,因为它在循环迭代之后检查循环条件。因此,它将打印字符串并调用scanf,从而更新wdlen变量。

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

对于while循环,它在循环体执行之前评估循环条件。 wdlen可能在您的代码中以超过2开始,这就是您永远无法到达循环体的原因。

答案 3 :(得分:2)

在退出控制循环中执行。 while是一个入口控制循环。

答案 4 :(得分:2)

<强>虽然:

  1. 进入控制循环

  2. 在循环执行之前检查
  3. 条件

  4. 如果条件为假,则永远不执行循环

  5. 在while语句结束时没有分号

  6. <强> DO-而

    1. 退出控制循环

    2. 在循环结束时检查条件

    3. 至少执行一次错误条件,因为稍后会检查条件

    4. 在while语句结束时有分号。

答案 5 :(得分:1)

区别在于评估条件的时间。在do..while循环中,直到每个循环结束才会计算条件。这意味着do..while循环始终至少运行一次。在while循环中,条件在开始时进行评估。

这里我假设wdlenwhile循环的开头评估为false(即,它大于1),因此while循环永远不会运行。在do..while循环中,直到第一个循环结束才会检查它,因此您可以获得预期的结果。

答案 6 :(得分:1)

执行循环至少执行一次.......但是循环将首先检查条件,然后根据情况执行或不执行条件。

在您的示例中,wdlen可能会假设任何垃圾值> 2所以循环永远不会被执行。

执行循环时会被执行并告诉你输入值并在终止条件中检查该值

答案 7 :(得分:0)

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

换一种说法:

  • 虽然您的情况是在循环块的开头,但使您永远不会进入循环。
  • 在While循环中,首先测试条件,然后在测试结果为true时执行代码块。

答案 8 :(得分:0)

步骤1与while的{​​{1}}构造之间的区别在于do while中的任何表达式都将至少运行一次,而不管do {}中的条件如何条款。

while()

以下是详细说明:Explanation 访问:coderforevers

答案 9 :(得分:0)

While循环:

while(test-condition)
{
      statements;
      increment/decrement;
}
  1. 降低执行时间和速度
  2. Entry Conditioned Loop
  3. 没有固定的迭代次数
  4. Do While Loop:

    do
    {
          statements;
          increment/decrement;
    }while(test-condition);
    
    1. 更高的执行时间和速度
    2. 退出条件循环
    3. 最少一次迭代次数
    4. 在此处了解有关此主题的更多信息: Difference Between While and Do While Loop

      这对C编程,Java编程和其他语言也有效,因为概念保持不变,只有语法更改。

      另外,要注意的另一个小但有区别的因素是while while循环在while条件结束时由分号组成。

答案 10 :(得分:0)

do while(退出检查)和while(条目检查)之间的区别在于,在输入do时虽然它不会检查但是在它将首先检查时

示例是这样的:

计划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并且还放一个++,程序1和程序2的输出将是相同的;和b ++;在该计划的各自主体。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

在>在循环内执行语句后测试条件

答案 13 :(得分:0)

while 循环中执行语句之前

测试条件

在循环中执行语句后,

执行测试条件

来源:让我们C

答案 14 :(得分:0)

while循环将至少执行一次.......但是while循环将首先检查条件然后根据条件可能会执行也可能不会执行。  同时:您的条件位于循环块的开头,并且可以永远不进入循环。

Do While:您的条件是在循环块结束时,并且必须至少进入一次循环。

答案 15 :(得分:0)

可能wdlen以值&gt; = 2开头,所以在第二种情况下,循环条件最初为false,并且永远不会输入循环。

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

答案 16 :(得分:-1)

while(wdlen<2){
  ...
 }  

如果wdlen(假设它是一个堆栈变量)没有初始化或在输入while循环之前分配了一个值,它将包含之前在该内存中的任何内容(即垃圾)。因此,如果垃圾值是&lt; 2,循环执行,否则不执行。

do{
 ...
}while(wdlen<2)

将执行一次,然后检查条件再次运行循环,这次它可能成功,如果发现未初始化的wdlen小于2。