Разница между циклами "while" и "do while"
В чем разница между циклами while и while while. Раньше я думал, что оба они абсолютно одинаковы. Затем я наткнулся на следующий фрагмент кода:
do {
printf("Word length... ");
scanf("%d", &wdlen);
} while(wdlen<2);
Этот код работает отлично. Он печатает длину слова и tascans. Но когда я изменил его на
while(wdlen<2){
printf("Word length... ");
scanf("%d", &wdlen);
}
Он показывает пустой экран. Это не работает. Таким образом, существует определенная функциональная разница между двумя циклами. Может кто-нибудь объяснить это? Спасибо заранее.
EDIT: Есть ли другая разница в этих двух?
Ответы
Ответ 1
Цикл делать while выполняет цикл цикла один раз перед проверкой состояния while.
В то время как цикл while проверяет условие перед выполнением содержимого.
В этом случае вы ожидаете ввода пользователем с помощью функции scanf(), которая никогда не будет выполняться в цикле while, поскольку wdlen не инициализируется и может содержать только значение мусора, которое может быть больше 2.
Ответ 2
Пока: ваше условие находится в начале цикла, и позволяет никогда не входить в цикл.
Do While: ваше условие находится в конце блока цикла и делает обязательным ввести цикл хотя бы один раз.
Ответ 3
do {
printf("Word length... ");
scanf("%d", &wdlen);
} while(wdlen<2);
Цикл A do-while
гарантирует выполнение цикла хотя бы один раз, потому что он проверяет условие цикла ПОСЛЕ Итерации цикла. Поэтому он будет печатать строку и вызывать scanf, обновляя, таким образом, переменную wdlen.
while(wdlen<2){
printf("Word length... ");
scanf("%d", &wdlen);
}
Что касается цикла while
, он вычисляет условие цикла перед тем, как выполняется тело цикла. wdlen
, вероятно, начинается с более чем 2 в вашем коде, поэтому вы никогда не дойдете до тела цикла.
Ответ 4
делать во время цикла управления выходом.
while - контур управления входом.
Ответ 5
Разница заключается в том, когда условие оценивается. В цикле do..while
условие не оценивается до конца каждого цикла. Это означает, что цикл do..while
будет всегда работать хотя бы один раз. В цикле while
условие оценивается в начале.
Здесь я предполагаю, что wdlen
вычисляет false (т.е. больше 1) в начале цикла while
, поэтому цикл while никогда не запускается. В цикле do..while
он не проверяется до конца первого цикла, поэтому вы получаете ожидаемый результат.
Ответ 6
Выполнять while цикл будет выполняться по крайней мере один раз......., но while цикл сначала проверяет состояние, а затем он может или не может выполняться в зависимости от при условии.
В вашем примере wdlen может принять любое значение мусора, которое составляет > 2, поэтому , тогда как цикл никогда не будет выполнен.
тогда как делать while цикл будет ececuted и будет указывать u, чтобы ввести значение и проверить это значение в завершающем условии
Ответ 7
В то время как:
-
петля управления записью
-
условие проверяется перед выполнением цикла
-
никогда не выполняйте цикл, если условие false
-
в конце while нет точки с запятой.
Do-время:
-
цикл управления выходом
-
условие проверяется в конце цикла
-
выполняет ложное условие хотя бы один раз, поскольку условие проверяется позже
-
есть точка с запятой в конце инструкции while.
Ответ 8
Вероятно, wdlen
начинается со значения >= 2, поэтому во втором случае условие цикла изначально ложно и цикл никогда не вводится.
Во втором случае тело цикла выполняется до того, как условие wdlen<2
будет проверено в первый раз, поэтому printf
/scanf
выполняется хотя бы один раз.
Ответ 9
Выполняет цикл while, хотя бы один раз......., но в то время как цикл сначала проверяет состояние, а затем он может или не может выполняться в зависимости от условия.
Пока: ваше условие находится в начале цикла, и позволяет никогда не входить в цикл.
Do While: ваше состояние находится в конце блока цикла и делает обязательным ввести цикл хотя бы один раз.
Ответ 10
пока проверьте условие перед выполнением операторов в цикле while.
сделать while проверить условие после выполнения инструкции внутри цикла.
источник: давайте C
Ответ 11
при проверке условия до выполнения операторов во время цикла while.
do, проверяя условие после, выполнив инструкцию внутри цикла.
Ответ 12
В WHILE сначала проверьте состояние, а затем выполните программу
В цикле DO-WHILE сначала выполните программу хотя бы один раз, затем проверьте условие
Ответ 13
Разница между 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:
[ничего не напечатано]
Примечание:
вывод программы 1 и программы 2 будет таким же, если мы назначим a = 0 и b = 0, а также положим a ++; и b ++; в соответствующем теле программы.
Ответ 14
Пока цикл:
while(test-condition)
{
statements;
increment/decrement;
}
- Уменьшение времени выполнения и скорости
- Контур, состоящий из записи
- Нет фиксированного количества итераций
Do While Loop:
do
{
statements;
increment/decrement;
}while(test-condition);
- Более высокое время выполнения и скорость
- Выход из условного цикла
- Минимальное количество итераций
Узнайте больше на эту тему здесь: Разница между while и do While Loop
Это справедливо для программирования на языке C, программирования Java и других языков, так как концепции остаются неизменными, только изменения синтаксиса.
Кроме того, еще один небольшой, но дифференцирующий фактор, который следует отметить, состоит в том, что цикл while while состоит из точки с запятой в конце условия while.
Ответ 15
Разница между конструкциями while
с шага 1 по сравнению с do while
заключается в том, что любые выражения внутри do {}
будут выполняться хотя бы один раз, независимо от условия в предложении while()
.
println("\nStep 2: How to use do while loop in Scala")
var numberOfDonutsBaked = 0
do {
numberOfDonutsBaked += 1
println(s"Number of donuts baked = $numberOfDonutsBaked")
} while (numberOfDonutsBaked < 5)
Подробное объяснение: Объяснение
Посещение: coderforevers
Ответ 16
Самое важное различие между циклом while
и do-while
while состоит в том, что в do-while
блок кода выполняется по крайней мере один раз, даже если данное условие ложно.
Чтобы выразить это по-другому:
- While- ваше состояние находится в начале блока цикла и позволяет никогда не входить в цикл.
- В цикле while сначала проверяется условие, а затем выполняется блок кода, если результат теста равен true.
Ответ 17
while(wdlen<2){
...
}
Если wdlen (предполагая, что это переменная стека) не инициализируется или не назначается значение до того, как будет введен цикл while, он будет содержать все, что было в этом пространстве в памяти до (т.е. мусор). Поэтому, если значение мусора равно < 2, цикл выполняется, в противном случае - нет.
do{
...
}while(wdlen<2)
будет выполняться один раз, а затем проверяет условие на запуск цикла снова, и на этот раз он может завершиться успешно, если случайно wdlen, который неинициализирован, окажется меньше 2.