A в то время как цикл всегда сначала оценивает состояние.
while (condition) {
//gets executed after condition is checked
}
A цикл do / while всегда будет выполняться
сначала код в блоке do{}
а затем оцените состояние.
do {
//gets executed at least once
} while (condition);
A для цикла позволяет инициировать переменную счетчика, условие проверки и способ увеличения счетчика в одну строку.
for (int x = 0; x < 100; x++) {
//executed until x >= 100
}
В конце концов, все они все еще циклы, но они предлагают некоторую гибкость в отношении того, как они выполняются.
Вот отличное объяснение рассуждений , стоящих за использованием каждого типа петли, которая может помочь прояснить ситуацию. Спасибо clyfe
Основное различие между for
и while
это вопрос
прагматика: мы обычно используем for
когда
есть известное количество итераций,
и использовать while
конструкции, когда
количество итераций не известно в
авансовый. while
против do ... while
вопрос также прагматики,
второй выполняет инструкции один раз
в начале, а потом ведет себя
так же, как простое время.
<ч />
Ведь петли особенно хороши, потому что они лаконичны. Для этого для цикла
for (int x = 0; x < 100; x++) {
//executed until x >= 100
}
, чтобы быть записанным как цикл while, вам нужно сделать следующее.
int count = 0;
while (count < 100) {
//do stuff
count++;
}
В этом случае есть просто еще кое-что, и count++;
может потеряться в логике. Это может оказаться проблематичным в зависимости от того, где count
увеличивается, и следует ли увеличивать его до или после логики цикла. В цикле for
переменная вашего счетчика всегда увеличивается до следующей итерации цикла, что добавляет некоторый единообразие вашему коду.
<ч />
Для полноты картины, вероятно, имеет смысл поговорить об операторах break
и continue
, которые могут пригодиться при обработке цикла.
break немедленно прервет текущий цикл и больше итераций не будет выполнено.
//will only run "do stuff" twice
for (int x = 0; x < 100; x++) {
if (x == 2) {
break;
}
//do stuff
}
продолжить прервет текущую итерацию и перейдет к следующей.
//will run "do stuff" until x >= 100 except for when x = 2
for (int x = 0; x < 100; x++) {
if (x == 2) {
continue;
}
//do stuff
}
Обратите внимание, что в цикле for "continue" вычисляет выражение "part3" для for (part1; part2; part3) '; напротив, в цикле while он просто перепрыгивает, чтобы повторно оценить условие цикла.