Оператор безумовного переходу goto
Синтаксис :
goto <мітка>;
/* ... */
<мітка> : <оператор>;.
Оператор безумовного переходу goto передає управління безпосередньо на <оператор>, перед яким розташована <мітка>. Область дії мітки обмежена функцією, в якій вона визначена. Тому, кожна мітка повинна бути відмінною від інших в одній і тій самій функції. Також, неможливо передати управління оператором goto в іншу функцію.
Оператор, перед яким розташована <мітка>, виконується зразу після виконання оператора goto. Якщо оператор з міткою відсутній, то компілятор видасть повідомлення про помилку.
В свою чергу при появі концепції структурного програмування оператор goto піддався критиці, і його використання стало розглядатися як ознака поганого стилю програмування. Дійсно, надмірно широке використання goto робить структуру програми надмірно заплутаною, тому без особливої необхідності намагайтесь обходитися без оператора goto. Рекомендується або взагалі відмовитися від goto, або звести його використання до мінімума та дотримуватися наступного:
- не входити усередину блоку зовні;
- не входити усередину умовного оператора if;
- не входити усередину переключателю switch;
- не передавати управління усередину цикла.
Приклад 3. Використання оператора goto. Обчислення добутку від 2 до 3.
void main()
{
int n=3, f=1, i=2;
start:
if (i>n) goto end;
f *= i;
i++;
goto start;
end: ;
cout<<"\n f= "<<f;
}
Використання оператора goto в програмі аналогічно використанню цикла. Обчислення продовжується, якщо і меншеабо дорівнює 3. В результаті отримаємо 6.