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

Опубликовано: 31 Декабря, 2021

Оператор goto - это оператор перехода, который иногда также называют оператором безусловного перехода. Оператор goto может использоваться для перехода из любого места в любое место внутри функции.
Синтаксис :

Syntax1 | Синтаксис2
----------------------------
метка перехода; | метка:  
. | .
. | .
. | .
этикетка: | метка перехода;

В приведенном выше синтаксисе первая строка сообщает компилятору перейти к оператору, помеченному как метка, или перейти к нему. Здесь метка - это определяемый пользователем идентификатор, который указывает целевой оператор. Оператор, следующий сразу за меткой: - это оператор назначения. Метка «метка:» также может стоять перед меткой перехода; в приведенном выше синтаксисе.

Ниже приведены несколько примеров использования оператора goto:
Примеры:

  • Тип 1 : в этом случае мы увидим ситуацию, аналогичную показанной в Syntax1 выше. Предположим, нам нужно написать программу, в которой нам нужно проверить, четное число или нет, и распечатать соответственно с помощью оператора goto. Программа ниже объясняет, как это сделать:

    C

    // C program to check if a number is
    // even or not using goto statement
    #include <stdio.h>
    // function to check even or not
    void checkEvenOrNot( int num)
    {
    if (num % 2 == 0)
    // jump to even
    goto even;
    else
    // jump to odd
    goto odd;
    even:
    printf ( "%d is even" , num);
    // return if even
    return ;
    odd:
    printf ( "%d is odd" , num);
    }
    int main() {
    int num = 26;
    checkEvenOrNot(num);
    return 0;
    }

    C ++

    // C++ program to check if a number is
    // even or not using goto statement
    #include <iostream>
    using namespace std;
    // function to check even or not
    void checkEvenOrNot( int num)
    {
    if (num % 2 == 0)
    // jump to even
    goto even;
    else
    // jump to odd
    goto odd;
    even:
    cout << num << " is even" ;
    // return if even
    return ;
    odd:
    cout << num << " is odd" ;
    }
    // Driver program to test above function
    int main()
    {
    int num = 26;
    checkEvenOrNot(num);
    return 0;
    }
    Выход:
    26 чётное
    
  • Тип 2:: В этом случае мы увидим ситуацию, аналогичную показанной в Syntax1 выше. Предположим, нам нужно написать программу, которая печатает числа от 1 до 10 с помощью оператора goto. Ниже программа объясняет, как это сделать.

    C

    // C program to print numbers
    // from 1 to 10 using goto statement
    #include <stdio.h>
    // function to print numbers from 1 to 10
    void printNumbers()
    {
    int n = 1;
    label:
    printf ( "%d " ,n);
    n++;
    if (n <= 10)
    label; goto
    }
    // Driver program to test above function
    int main() {
    printNumbers();
    return 0;
    }

    C ++

    // C++ program to print numbers
    // from 1 to 10 using goto statement
    #include <iostream>
    using namespace std;
    // function to print numbers from 1 to 10
    void printNumbers()
    {
    int n = 1;
    label:
    cout << n << " " ;
    n++;
    if (n <= 10)
    label; goto
    }
    // Driver program to test above function
    int main()
    {
    printNumbers();
    return 0;
    }
    Выход:
    1 2 3 4 5 6 7 8 9 10
    

Недостатки использования оператора goto:

  • Использование оператора goto крайне не рекомендуется, так как оно делает логику программы очень сложной.
  • использование goto делает задачу анализа и проверки правильности программ (особенно тех, которые включают циклы) очень сложной.
  • Использование goto можно просто избежать, используя операторы break и continue.

Эта статья предоставлена Harsh Agarwal. Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите учиться на лучших видео и практических задачах, ознакомьтесь с Базовым курсом C для базового и продвинутого C.
C++ C