Wykonanie instrukcji skoku przenosi sterowanie w inne miejsce programu. Ma ona postać
goto etykieta;gdzie etykieta jest etykietą pewnej instrukcji wewnątrz tej samej funkcji. Sterowanie zostanie przeniesione właśnie do tej instrukcji.
W zasadzie język dopuszcza najdziwniejsze skoki, ale należy unikać
skoków do wnętrza instrukcji złożonych (choć formalnie takie
skoki są legalne, jeśli tylko nie omijają deklaracji z inicjatorami).
Najczęściej używa się instrukcji
goto
 aby wyjść
z wnętrza zagnieżdżonych pętli, jak w następującym programie:
      1.  #include <iostream>
      2.  using namespace std;
      3.  
      4.  int main() {
      5.      const int st_size = 7;
      6.  
      7.      int oceny[][st_size] = { { 5, 4, 3, 3, 3, 4, 4 },
      8.                               { 5, 3, 3, 3, 4, 2, 3 },
      9.                               { 4, 4, 4, 4, 3, 3, 5 } };
     10.  
     11.      int gr_size = sizeof(oceny)/sizeof(oceny[0]);
     12.  
     13.      bool jestDwoja = false;
     14.  
     15.      for (int grupa = 0; grupa < gr_size; grupa++)  ➊
     16.          for (int student = 0; student < st_size; student++)
     17.              if ( oceny[grupa][student] == 2 ) {
     18.                  jestDwoja = true;
     19.                  goto KONIEC;
     20.              }
     21.  KONIEC:                                            ➋
     22.      if (jestDwoja) cout << "Byla dwojka"   << endl;
     23.      else           cout << "Nie ma dwojki" << endl;
     24.  }
W zagnieżdżonej pętli rozpoczynającej się w linii ➊ szukamy oceny niedostatecznej w dwuwymiarowej tablicy ocen indeksowanej numerem grupy i numerem studenta. Ponieważ interesuje nas tylko, czy jest choć jedna ocena niedostateczna, w momencie, gdy taką znajdziemy, chcemy wyjść z obu pętli. Zauważmy, że instrukcja break przerwałaby tylko pętlę wewnętrzną; pętla po grupach byłaby kontynuowana. Dlatego użyliśmy instrukcji goto, która „wyrzuca” nas od razu z obu pętli aż do linii ➋.
T.R. Werner, 21 lutego 2016; 20:17