C++ Оператор goto

Циклы C++

gotoОператор позволяет безусловно передать управление помеченному оператору внутри той же функции.

Примечание:В любом языке программирования не рекомендуется использовать оператор goto. Поскольку это затрудняет отслеживание потока управления программы, делая программу трудной для понимания и сложной для изменения. Любую программу, использующую оператор goto, можно переписать так, чтобы оператор goto не требовался.

Синтаксис

В C++goto Синтаксис оператора:

goto label;
..
.
label: statement;

Здесь,label— это идентификатор, который обозначает помеченный оператор и может быть любым обычным текстом, кроме ключевых слов C++. Помеченный оператор может быть любым оператором, размещённым после идентификатора и двоеточия (:).

Блок-схема

C++ goto 语句

Пример

Пример

#include <iostream>
using namespace std;
 
int main ()
{
   // Объявление локальной переменной
   int a = 10;

   // выполнение цикла do
   LOOP:do
   {
       if( a == 15)
       {
          // пропустить итерацию
          a = a + 1;
          goto LOOP;
       }
       cout << "значение a:" << a << endl;
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

Одно из хороших применений оператора goto — выход из глубоко вложенных подпрограмм. Например, рассмотрим следующий фрагмент кода:

for(...) {
   for(...) {
      while(...) {
         if(...) goto stop;
         .
         .
         .
      }
   }
}
stop:
cout << "Error in program.\n";

Устранениеgotoприведёт к выполнению некоторых дополнительных проверок. Простой операторbreakздесь не сработает, потому что он только заставит программу выйти из самого внутреннего цикла.

Циклы C++

Другие расширения