8.2 Etykiety

Każda instrukcja czynna (a więc nie deklaracja) może być poprzedzona etykietą. Etykieta to dowolny identyfikator i następujący po nim dwukropek. Instrukcją opatrzoną etykietą może, w szczególności, być instrukcja pusta. Etykieta może być wykorzystana do wykonania skoku za pomocą instrukcji goto (patrz dalej), jak w poniższym przykładzie.


P45: labincpp.cpp     Skok do instrukcji z etykietą

      1.  #include <iostream>
      2.  using namespace std;
      3.  
      4.  int main() {
      5.      int tab[2][2][2]{{{1,2},{3,4}},{{5,6},{7,8}}};
      6.      bool jest = false;
      7.      for (int i = 0; i < 2; i++)
      8.          for (int j = 0; j < 2; j++)
      9.              for (int k = 0; k < 2; k++)
     10.                  if (tab[i][j][k] == 5) {    
     11.                      jest = true;
     12.                      goto LAB;
     13.                  }
     14.      LAB:if(jest)                            
     15.          cout << "5 jest w tablicy" << endl;
     16.      else
     17.          cout << "5 nie wystepuje w w tablicy" << endl;
     18.  }

W programie tym, wewnątrz zagnieżdżonej pętli for poszukiwany jest element trzywymiarowej tablicy liczbowej, który jest równy 5. Jeśli zostanie znaleziony (), to zmienną jest ustawiamy na true i, dzięki instrukcji skoku, wychodzimy z zewnętrznej pętli — przepływ sterowania przechodzi do linii z etykietą LAB:. Omówiona dalej instrukcja zaniechania break spowodowałaby wyjście tylko z pętli wewnętrznej (a instrukcji break z etykietą, znanej z Javy, w C/C++ nie ma).

Innym rodzajem etykiet są etykiety w instrukcji switch. Jest ich tylko dwie: casedefault (podrozdział o instrukcji switch ).

T.R. Werner, 23 lutego 2019; 23:59