À ma façon de penser, une boucle for est utilisée pour itérer sur une plage connue ou déterminable.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
ce qui équivaut (portée de i de côté) à:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
En d'autres termes, la for
boucle est simplement un sucre syntaxique (très utile) pour une while
construction couramment utilisée .
Cependant, je vois beaucoup de for(;;)
constructions sur le Web qui sont fonctionnellement équivalentes àwhile(true)
Quel en est le raisonnement? Pourquoi la boucle for infinie serait-elle préférée à la boucle while infinie?
// J'ai même vu un manuel java qui n'utilisait pas du tout de boucles while! Menant à des constructions monstrueuses telles que:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
et for
ici et la question ne changera pas. while(true)
et for(;;)
signifient la même chose. Vous avez évidemment une forte préférence pour while
, d'autres peuvent avoir une préférence tout aussi forte pour for
. Il est impossible de dire que l'un est plus correct que l'autre.
for(;;)
déroutant. C'est un idiome C standard, que vous allez documenter dans la section 3.5 de K&R (2e). Je comprends que vous ne l'aimez pas; vous devez comprendre que les autres le préfèrent évidemment (sinon vous ne le verriez jamais). Il peut être plus ou moins acceptable dans des langues autres que C; vous avez étiqueté cette langue-agnostique qui ne fait que diminuer la possibilité d'une réponse définitive. Encore une fois, j'ai voté pour fermer parce que le Q n'est pas constructif; si j'avais été offensé, j'aurais signalé l'offensive au lieu ou en plus de la fermeture. C'est tout.
wheeeeeeee { ... }