Solución:
for(;;) {
}
funcionalmente significa
while (true) {
}
Probablemente romperá el bucle / retorno del bucle en función de alguna condición dentro del cuerpo del bucle.
La razón que for(;;)
bucles para siempre es porque for
tiene tres partes, cada uno de los cuales es opcional. La primera parte inicializa el bucle; el segundo decide si continuar o no el ciclo, y el tercero hace algo al final de cada iteración. Es de forma completa, normalmente verá algo como esto:
for(i = 0; i < 10; i++)
Si faltan la primera (inicialización) o la última (final de la iteración), no se hace nada en su lugar. Si falta la parte del medio (prueba), entonces actúa como si true
estaban allí en su lugar. Entonces for(;;)
es lo mismo que for(;true;)
‘, que (como se muestra arriba) es lo mismo que while (true)
.
los for
El bucle tiene 3 componentes, separados por punto y coma. El primer componente se ejecuta antes de que comience el bucle y se usa comúnmente para inicializar una variable. La segunda es una condición. La condición se comprueba al comienzo de cada iteración y, si se evalúa como verdadera, se ejecuta el código del ciclo. Los terceros componentes se ejecutan al final del ciclo, antes de que comience otra iteración (comenzando con la verificación de condición) y, a menudo, se usan para incrementar una variable.
En tu caso for(;;)
significa que se repetirá eternamente ya que la condición no está presente. El ciclo termina cuando el código return
s o break
s.
Cada cláusula de un for
bucle es opcional. Entonces, cuando se excluyen, todavía se repite. for
los bucles se compilan en while
bucles.
El resultado final se convierte en una verificación para inicializar cualquier variable, que concluye después de que no pasa nada ya que está vacía, una verificación de la condición booleana en la segunda cláusula, que no está presente para que comience el ciclo, y una vez que el ciclo llega al corchete final, una verificación para ver si hay algún código para ejecutar antes de verificar la condición booleana nuevamente.
En el código se ve así:
while(true){
}