El lenguaje C también permite la orden “goto”, para hacer saltos incondicionales. Su uso indisciplinado está muy mal visto, porque puede ayudar a hacer programas llenos de saltos, difíciles de seguir. Pero en casos concretos puede ser muy útil, por ejemplo, para salir de un bucle muy anidado (un “for” dentro de otro “for” que a su vez está dentro de otro “for”: en este caso, “break” sólo saldría del “for” más interno).
El formato de “goto” es
goto donde;
y la posición de salto se indica con su nombre seguido de dos puntos (:)
donde:
como en el siguiente ejemplo:
/*---------------------------*/
/* Ejemplo en C nº 35: */
/* C035.C */
/* */
/* "for" y "goto" */
/* */
/* Curso de C, */
/* Nacho Cabanes */
/*---------------------------*/
#include
int main()
{
int i, j;
for (i=0; i<=5; i++)
for (j=0; j<=20; j+=2)
{
if ((i==1) && (j>=7)) goto salida;
printf("i vale %d y j vale %d.\n", i, j);
}
salida:
printf("Fin del programa\n");
return 0;
}
El resultado de este programa es:
i vale 0 y j vale 0.
i vale 0 y j vale 2.
i vale 0 y j vale 4.
i vale 0 y j vale 6.
i vale 0 y j vale 8.
i vale 0 y j vale 10.
i vale 0 y j vale 12.
i vale 0 y j vale 14.
i vale 0 y j vale 16.
i vale 0 y j vale 18.
i vale 0 y j vale 20.
i vale 1 y j vale 0.
i vale 1 y j vale 2.
i vale 1 y j vale 4.
i vale 1 y j vale 6.
Fin del programa
Vemos que cuando i=1 y j>=7, se sale de los dos “for”.