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.


P46: labincpp.cpp     Skok do instrukcji z etykietą

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

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 etykiety 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, 21 lutego 2016; 20:17