Бьерн Страуструп - Язык программирования С++. Главы 2-4 - Оператор goto

ОГЛАВЛЕНИЕ

 

3.3.2  Оператор goto

Презираемый оператор goto все-таки есть в С++:

           goto идентификатор;
           идентификатор: оператор

Вообще говоря, он мало используется в языках высокого уровня, но может быть очень полезен, если текст на С++ создается не человеком, а автоматически, т.е. с помощью программы. Например, операторы goto используются при создании анализатора по заданной грамматике языка с помощью программных средств.

Кроме того, операторы goto могут пригодиться в тех случаях, когда на первый план выходит скорость работы программы. Один из них - когда в реальном времени происходят какие-то вычисления во внутреннем цикле программы.

Есть немногие ситуации и в обычных программах, когда применение goto оправдано. Одна из них - выход из вложенного цикла или переключателя. Дело в том, что оператор break во вложенных циклах или переключателях позволяет перейти только на один уровень выше.

Приведем пример:

           void f()
           {
             int i;
             int j;

             for ( i = 0; i < n; i++)
                 for (j = 0; j<m; j++)
                     if (nm[i][j] == a) goto found;
                 // здесь a не найдено
                 // ...
             found:
                 //  nm[i][j] == a
           }

Есть еще оператор continue, который позволяет перейти на конец цикла. Что это значит, объяснено в $$3.1.5.