Оператор goto
Оператор безусловного перехода goto имеет формат:
goto метка:
В теле той же функции должна присутствовать ровно одна конструкция вида:
метка: оператор:
Оператор goto передает управление на помеченный оператор. Метка – это обычный идентификатор, областью видимости которого является функция, в теле которой он задан.
Использование оператора безусловного перехода оправдано в двух случаях:
· принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей;
· переход из нескольких мест функции в одно (например, если перед выходом из функции всегда необходимо выполнять какие-либо действия).
В остальных случаях для записи любого алгоритма существуют более подходящие средства, а использование gotoприводит только к усложнению структуры программы и затруднению отладки. Применение gotoнарушает принципы структурного и модульного программирования, по которым все блоки, из которых состоит программа, должны иметь только один вход и один выход.
В любом случае не следует передавать управление внутрь операторов if, switchи циклов. Нельзя переходить внутрь блоков, содержащих инициализацию переменных, на операторы, расположенные после нее, поскольку в этом случае инициализация не будет выполнена:
int k: ...
goto metka; ...
{int а = 3. b = 4; к = а + b;
metka: int m = к + 1; ...
}
После выполнения этого фрагмента программы значение переменной m не определено.
Дата добавления: 2015-10-09; просмотров: 892;