Цикл FOR в C, условная часть

Небольшой вопрос, чтобы уточнить.

В компиляторе ZX-Spectrum BASIC есть цикл FOR TO STEP NEXT, где TO является безусловным:

10 FOR i=1 TO 5 STEP 1

Я пробовал подобную практику в C

for (i=1; i==5; i++); 

и, конечно, цикл не работает (== здесь никогда не верно)... поэтому вопрос таков:

Находясь в цикле C FOR, мы всегда должны использовать CONDITION, чтобы остановить цикл (я имею в виду CONDITION в скобках оператора FOR), как FOR (i = 0; i<6; i ++);

6 ответов

Правильный перевод:

for i = 1 to 5 step 1

было бы:

for (i = 1; i <= 5, i++)

Другими словами, цикл выполняется пять раз с переменной управления, установленной в 1, 2, 3, 4 а также 5 на последовательных итерациях.

Существуют и другие варианты, которые вы можете использовать, такие как разные условные операторы и разные значения завершения, но показанный наиболее соответствует варианту BASIC, но при этом защищает вас в случае, когда ваш шаг может быть больше одного (например, for i = 1 to 4 step 2).

Имейте в виду, что массивы C основаны на 0, поэтому, если вы используете это i для доступа к массиву необходимо запустить 0 в n-1не 1 в n, Если вам просто нужна переменная для других целей (например, распечатка чисел от одного до пяти включительно), 1..n вариант в порядке.

да, условие должно иметь "<" или ">" или ">=" или "<=", так как нам нужно применить ограничение к циклу. когда вы используете "==", цикл будет проверять, равно ли число 5 или нет, и, конечно, 0 не равно 5, и, следовательно, цикл будет завершен. где, как и при использовании "<", цикл будет проверять, меньше ли значение "i" 5 или нет. Также вы поставили ";" после оператора цикла for, который неверен, поскольку ни один из операторов внутри фигурных скобок цикла for не будет выполнен.

В вашем коде есть две проблемы: вы не должны использовать ; после заголовка цикла, и вы можете использовать < или <= в части условия следующим образом:

      for(int i=1; i<=5; i++){}

поэтому это должно быть условие, но вам не нужно использовать неравенство, вы можете использовать любое другое условие, но оно должно быть завершено через некоторое время.

Вы могли бы использовать

for (i = 1; i != 6; i++); 

Но было бы лучше использовать i = 0 ... i < 5В случае, если вы измените i внутри петли. Он также сообщает, что вы делаете лучше.

Нет никаких ограничений на то, что вы должны использовать условный оператор в цикле for.
Вы также используете этот условный оператор в теле цикла for следующим образом...

for(int i=0;;i++)
{
      if(i>=5)
      {
         break;// to break the loop
      }
}

если вы не используете условный оператор at в цикле for или в теле цикла for, тогда цикл переходит в бесконечное состояние следующим образом...

for(int i=0;;i++)
{
    //any statements
}

В цикле for все три части являются необязательными (инициализация, условная, incri/decri)

int i=0
for(;;)
{
      if(i>=5)
      {
           //any statements
      }

      i++
}

Условия цикла не нужны, вы можете написать циклы как

for(int i=0;;i++)
{
//body
}

но обратите внимание, что тело цикла должно содержать оператор break, иначе цикл выполняется бесконечное время

Другие вопросы по тегам