Найти тему

Инструкции goto в Си и С++

Я как-то уже рассказывал про оператор goto в PHP. В С/С++ (да и в других языках) тоже имеются подобные операторы. И тоже их не советуют использовать. Однако знать о них надо, поскольку вы их можете встретить в чужих исходных кодах, особенно в старых и особенно на чистом С.

Оператор goto выполняет безусловный переход к метке.

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

ИмяМетки:

То есть просто надо написать любой допустимый в языке идентификатор и поставить двоеточие. Затем в любом участке кода можно использовать оператор goto, после которого написать имя метки, и тем самым выполнить безусловный переход к тому участку кода, на который указывает метка. Пример:

Как видите, здесь мы последовали принципу “зачем просто, когда можно сложно”. И в начале программы мы выполняем переход на метку label_2, поэтому первой выводится надпись Hello 2. Затем мы переходим на метку label_1. Ну а чтобы программа не зациклилась, нам ещё пришлось добавить метку end и выполнить переход на неё.

Повторюсь, в современных программах необходимости использовать goto нет. Более того, применение этого оператора считается дурным тоном, поскольку делает код более запутанным (приведённый выше пример это как раз показывает - ничем не оправданное усложнение).

Однако в былые времена некоторые программисты, особенно чистые “сишники” (а кто-то может и сейчас по привычке) иногда использовали goto, например, для обработки ошибок. Так что вероятность встретить где-то такой код существует, хотя и низкая.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.