À 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 forboucle est simplement un sucre syntaxique (très utile) pour une whileconstruction 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;
}
whileet forici 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 { ... }