63
INSTRUKCJA GOTO
Dla wartości i większej od 10 nic będzie wyświetlany komunikat “Koniec”. Pętla wykona pełne 100 przejść.
Oto praktyczny przykład użycia tej instrukcji:
#include <stdio.h> int mainO {
int i;
for (i - 1 ; i <- 50 ; ++i) { if (i'/,4“*0) continue ; printf ("%d, ", i);
return 0;
Powyższy program generuje liczby z zakresu od 1 do 50. które nie są podzielne przez 4.
Istnieje także instrukcja, która dokonuje skoku do dowolnego miejsca programu, oznaczonego tzw. etykietą.
etykieta:
/* instrukcje */ goto etykieta;
Uwaga!: kompilator GCC w wersji 4.0 i wyższych jest bardzo uczulony na etykiety zamieszczone przed nawiasem klamrowym, zamykającym blok instrukcji. Innymi słowy: niedopuszczalne jest umieszczanie etykiety zaraz przed klamrą, która kończy blok instrukcji, zawartych np. w pętli for. Można natomiast stosować etykietę przed klamrą kończącą (hutą funkcję.
Instrukcja goto łamie sekwencję instrukcji i powoduje skok do dowolnie odległego miejsca w programie - co może mieć nieprzewidziane skutki. Zbyt częste używanie goto może prowadzić do trudnych do zlokalizowania błędów. Oprócz tego kompilatory mają kłopoty z optymalizacją kodu, w którym występują skoki. Z tego powodu zaleca się ograniczenie zastosowania tej instrukcji wyłącznie do opuszczania wielokrotnie zagnieżdżonych pętli.
Przykład uzasadnionego użycia: int i,j;
for (i ■ 0; i < 10; **i) { for (j ■ i; j < i+10; ++j) {
if (i + j 7, 21 ■■ 0) goto koniec;
koniec:
/* dalsza czesc programu */