На мій погляд, цикл for for використовується для перегляду відомого або визначеного діапазону.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
що еквівалентно (розміщення i вбік):
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
Іншими словами, for
петля - це просто (дуже корисний) синтаксичний цукор для загальновживаної while
конструкції.
Однак я бачу в Інтернеті багато for(;;)
конструкцій, які функціонально еквівалентніwhile(true)
Які міркування для цього? Чому б нескінченний цикл віддав перевагу над нескінченним циклом, а цикл?
// Я навіть бачив підручник java, який взагалі не використовував циклів! Ведучий до таких жахливих конструкцій, як:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
і for
тут питання не зміниться. while(true)
і for(;;)
означають те саме. Ви, очевидно, маєте сильні переваги while
, інші ж можуть мати однаково сильні переваги for
. Неможливо сказати, що одне правильніше, ніж інше.
for(;;)
заплутаним. Це стандартна ідіома С, яку ви задокументуєте в розділі 3.5 K&R (2e). Я розумію, що вам це не подобається; ви повинні розуміти, що інші, очевидно, віддають перевагу (інакше ви цього ніколи не бачили) Він може бути більш-менш прийнятним для інших мов, ніж C; ви позначили цю мову-агностик, що лише зменшує можливість остаточної відповіді. Знову я проголосував за закриття, оскільки Q не конструктивний; якби мене образили, я б позначив це як образливий, замість або як додаток до закриття. Це все.
wheeeeeeee { ... }