while循环和while循环之间有什么区别。我曾经认为两者完全相同。然后我遇到了以下一段代码:
do {
printf("Word length... ");
scanf("%d", &wdlen);
} while(wdlen<2);
此代码完美无缺。它打印字长和tascans输入。但是当我把它改成
时while(wdlen<2){
printf("Word length... ");
scanf("%d", &wdlen);
}
它给出一个空白屏幕。它不起作用。因此两个循环之间存在一些功能差异。任何人都可以解释一下吗?提前谢谢。
编辑:这两个还有其他区别吗?答案 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)
<强>虽然:强>
进入控制循环
条件
如果条件为假,则永远不执行循环
在while语句结束时没有分号
<强> DO-而强>
退出控制循环
在循环结束时检查条件
至少执行一次错误条件,因为稍后会检查条件
在while语句结束时有分号。
答案 5 :(得分:1)
区别在于评估条件的时间。在do..while
循环中,直到每个循环结束才会计算条件。这意味着do..while
循环始终至少运行一次。在while
循环中,条件在开始时进行评估。
这里我假设wdlen
在while
循环的开头评估为false(即,它大于1),因此while循环永远不会运行。在do..while
循环中,直到第一个循环结束才会检查它,因此您可以获得预期的结果。
答案 6 :(得分:1)
执行循环至少执行一次.......但是而循环将首先检查条件,然后根据情况执行或不执行条件。
在您的示例中,wdlen可能会假设任何垃圾值> 2所以而循环永远不会被执行。
而执行循环时会被执行并告诉你输入值并在终止条件中检查该值
答案 7 :(得分:0)
while
和do-while
循环之间最重要的区别在于,在do-while
中,即使给定的条件为false,代码块也至少执行一次。
换一种说法:
答案 8 :(得分:0)
步骤1与while
的{{1}}构造之间的区别在于do while
中的任何表达式都将至少运行一次,而不管do {}
中的条件如何条款。
while()
以下是详细说明:Explanation 访问:coderforevers
答案 9 :(得分:0)
While循环:
while(test-condition)
{
statements;
increment/decrement;
}
Do While Loop:
do
{
statements;
increment/decrement;
}while(test-condition);
在此处了解有关此主题的更多信息: 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)
测试条件。
在循环中执行语句后,执行测试条件。
来源:让我们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。