Los operadores break y continue se utilizan en las estructuras cíclicas (for, while, do..while) para controlar el flujo de ejecución.
Detalles:
break dentro de ciclos anidados saldrá solo del ciclo más interno.goto, se puede influir de manera compleja en la lógica.continue en ciclos while y do..while puede causar un salto inesperado en el flujo de control si no se considera el orden de las acciones.Ejemplo:
for (int i = 0; i < 5; ++i) { if (i == 2) continue; if (i == 4) break; printf("%d ", i); } // Imprime: 0 1 3
¿Cómo se comportará el ciclo con el operador continue si utiliza expresiones complejas en la inicialización y actualización del contador?
Respuesta incorrecta común:
Muchos creen que al activarse continue, todas las expresiones dentro de la estructura del ciclo (por ejemplo, la incrementación en for) no se ejecutan.
Respuesta correcta:
En el ciclo for, al alcanzar continue, se omite la parte restante del cuerpo del ciclo, pero la expresión de actualización del contador (tercera parte de la expresión en for) aún se ejecuta:
for (int i = 0; i < 3; printf("step %d ", i), ++i) { if (i == 1) continue; printf("%d ", i); }
Salida:
0
step 0
step 1
2
step 2
Historia
Dentro de un ciclo sobre un array se utilizó continue, olvidando actualizar el parámetro-contador de forma explícita (en un ciclo while), lo que llevó a un ciclo infinito.
Historia
Un ciclo anidado para buscar coincidencias activaba break ante la primera coincidencia, pero el programador esperaba que el ciclo se interrumpiera completamente, resultando en que el procesamiento de otros elementos no se realizaba correctamente.
Historia
En la construcción do..while, donde el ciclo principal utilizaba continue, se omitía una operación clave de finalización antes de pasar a la siguiente iteración, lo que provocaba la pérdida de datos debido a un cambio incorrecto de estado dentro del cuerpo del ciclo.