#c
#c
Вопрос:
Интересно, каков наилучший способ повторить итерацию for
цикла в c . Если for
цикл имеет такую форму
for(int i=0;i<some_value;i )
Решение, которое я применяю для повторения одной и той же итерации, — это просто возврат i
к предыдущему значению. Обычно это происходит после if
инструкции и в конце добавляемого блока if i--
. Проблема в том, что вы всегда хотите изменить параметры, которые вы ставите под сомнение в if
инструкции, потому что в итоге вы получите бесконечный цикл. Итак, есть ли лучший способ повторить ту же итерацию?
И я хотел бы расширить вопрос до for
цикла в этой форме
for(int j : some_other_value)
Как вы повторяете ту же итерацию с таким for
циклом?
Комментарии:
1. Это не цикл foreach . Это цикл for, основанный на диапазоне. Вы не можете повторить ту же итерацию в цикле for, основанном на диапазоне.
2. @ThomasSablik Спасибо, я отредактировал свой вопрос.
3. Повторное
int i
использование иsome_value
в ваших примерах, когда они означают совершенно разные вещи в этих контекстах, довольно запутанно.4. @ThomasSablik Я не понимаю, что плохого в том, что в разговорной речи термин for на основе диапазона называется «циклом foreach». Это именно то, что есть.
5.
for (int i ....) { work(i); if (repeat) { work(i); } }
. Или дажеfor (int i...) { again: work(i); if (repeat) goto again; }
!
Ответ №1:
Вы этого не делаете.
Если вам нужен более жесткий контроль над вашим циклом, чем просто перебор последовательности, основанный на ранжировании — for
это неправильный инструмент для этой работы.
Вместо этого вернитесь к циклу на основе индекса.
Комментарии:
1. @cigien Я тоже, но потом я понял, что OP также используется
int i
для их имени элемента, например, в диапазоне, поэтому лучше избегать 😉2. Спасибо за ответ и хороша ли моя практика
i--
внутри цикла первого типа или я мог бы использовать лучший?3. @DaniloIvanovic Я не в восторге от этого, tbh — я бы предпочел извлечь
i
вступление из цикла и вместо этого использовать его как оператор (условно выполняемый) в теле. Некоторые скажут, что это простой способ получить случайный бесконечный цикл, но я не думаю, что это хуже, чем играть с индексом «странными» способами.