Подтвердить что ты не робот

Как работает цикл for, особенно для (;;)?

Просматривая старый код компании, я столкнулся с циклом for, который выглядит так:

for (;;) {
    //Some stuff
}

Я попробовал Google, но не смог найти ответы. Я уснул в классе программирования или это необычный цикл?

4b9b3361

Ответ 1

A for цикл в java имеет следующую структуру -

for (initialization statement; condition check; update)
    loop body;

Как вы можете видеть, здесь есть четыре утверждения -

  • Оператор инициализации: этот оператор выполняется только один раз, когда цикл вводится в первый раз. Это необязательный оператор, то есть вы можете оставить это поле пустым. Он обычно используется для некоторых целей инициализации.
  • Условная проверка: это утверждение, вероятно, самое важное. Он проверяет, соответствует ли определенное выражение истинному. Если это так, выполнение цикла продолжается. Вы можете оставить это поле пустым, которое будет оцениваться как true.
  • Обновление: этот список операторов выполняется слева направо, обычно используется для увеличения/уменьшения некоторой переменной.
  • тело цикла: тело цикла, которое будет выполняться снова и снова на основе условного значения истинности проверки.

В основном, так выглядит выполнение: во-первых, когда цикл вводится в первый раз, оператор инициализации выполняется один раз. Затем выполняется условная проверка, чтобы проверить, соответствует ли она истинному. Если это так, то тело цикла выполняется, в противном случае выполнение цикла завершено. После этого выполняются() операторы обновления. Далее, условная проверка выполняется снова, и если она оценивает значение true, то снова выполняется тело цикла, затем выполняется инструкция обновления, затем снова условная проверка.... вы получаете изображение.

Теперь о синтаксисе for( ; ; ). У него нет инструкции инициализации, поэтому ничего не будет выполнено. Этот условный оператор проверки также пуст, поэтому означает, что он оценивает значение true. После этого выполняется тело цикла. Затем, поскольку оператор обновления пуст, ничего не выполняется. Затем выполняется условная проверка, которая снова оценивается как истина, а затем весь этот процесс снова будет повторяться.

Итак, вы видите, что это в основном бесконечный цикл, который не имеет инструкции инициализации, чья условная проверка всегда оценивает значение true и не имеет оператора обновления. Это эквивалентно -

while(true)
{
    .....
}

который является еще одной популярной конструкцией цикла в java.

Когда вы используете бесконечный цикл, подобный этому, важно обратить внимание на условие прерывания, так как в большинстве случаев вы не можете позволить циклу запускать бесконечно. Чтобы вырваться из этих типов циклов, вы можете использовать оператор break. Структура выглядит следующим образом:

if(some_condition_is_true)
    break;        // This will cause execution to break out of its nearest loop

или

if(some_condition_is_false)
    break;

Ответ 2

Это то же самое, что:

while(true) {
  //Some Stuff
}

В принципе, альтернативный синтаксис для бесконечного цикла.

Ответ 3

Это все бесконечные циклы

for(;;) {
   // endlessly
}

while(true) {
   // endlessly
}

do {
   // endlessly
} while(true);

Ответ 4

Этот цикл не имеет защиты и действует как цикл while (true). Он будет вращаться бесконечно до перерыва.

Ответ 5

Это бесконечный цикл. Не совсем правильное кодирование, потому что оно не является интуитивным, которое фактически скомпилирует или не выдаст ошибку времени выполнения. Переписывание как while(true) { /* code */ } было бы более читаемым, чтобы указать бесконечный цикл.

Ответ 6

Это бесконечный цикл. Операторы инициализации, условия и приращения являются необязательными, поэтому без каких-либо из них это всегда будет повторяться снова (если не ударит разрыв или какая-либо другая конструкция не взаимодействует с ним).

Хотя я не уверен в Java, этот вопрос объясняет, как в .Net ваши пустые for и while (true) будут скомпилированы точно так же, Я не удивлюсь, если Java тоже сделает.

Ответ 7

/* while loop

5 долларов

1 шоколад = 1 бакс

while my money is greater than 1 bucks 
  select chocolate
  pay 1 bucks to the shopkeeper
  money = money - 1
end

приходите домой и не можете пойти во время магазина, потому что мои деньги = 0 баксов */

#include<stdio.h>
int main(){
  int money = 5;

  while( money >= 1){   
    printf("inside the shopk and selecting chocolate\n");
    printf("after selecting chocolate paying 1 bucks\n");
    money = money - 1 ;  
    printf("my remaining moeny = %d\n", money);
    printf("\n\n");
  }

  printf("dont have money cant go inside the shop, money = %d",  money);

  return 0;
} 

бесконечные деньги

while( codition ){ // condition will always true ....infinite loop
  statement(s)
}

пожалуйста, посетите это видео для лучшего понимания https://www.youtube.com/watch?v=eqDv2wxDMJ8&t=25s