A mi modo de pensar, un bucle for se utiliza para iterar sobre un rango conocido o determinable.
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
que es equivalente (alcance de i aparte) a:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
En otras palabras, el forbucle es simplemente un azúcar sintáctico (muy útil) para una whileconstrucción comúnmente utilizada .
Sin embargo, veo muchas for(;;)construcciones en la web que son funcionalmente equivalentes awhile(true)
¿Cuál es el razonamiento para esto? ¿Por qué se preferiría el bucle infinito for sobre el bucle infinito while?
// ¡Incluso vi un libro de texto de Java que no usaba bucles while! Conduciendo a construcciones tan monstruosas como:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
whiley foraquí y la pregunta no cambiaría. while(true)y for(;;)significa lo mismo. Obviamente tiene una fuerte preferencia por while, otros pueden tener una preferencia igualmente fuerte por for. Es imposible decir que uno es más correcto que el otro.
for(;;)confuso en absoluto. Es un lenguaje C estándar, uno que documentará en la sección 3.5 de K&R (2e). Yo entiendo que usted no me gusta; se debe entender que otros prefieren obviamente ella (lo contrario nunca lo vería). Puede ser más o menos aceptable en lenguajes distintos de C; ha etiquetado este lenguaje independiente que solo disminuye la posibilidad de una respuesta definitiva. Nuevamente, voté para cerrar porque la Q no es constructiva; si me hubiera ofendido, habría marcado como ofensivo en lugar de o además del cierre. Eso es todo.
wheeeeeeee { ... }