Оператор goto

Задания раздела 5.5.3
5.22. Последний пример этого раздела, с переходом назад к метке begin, может быть написан лучше с использованием цикла. Перепишите код так, чтобы устранить оператор goto.

Пример этого раздела

begin:
int sz=get_size();
if (sz<=0) {
goto begin;
}

5.5.3


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

5.22. Последний пример этого раздела, с переходом назад к метке begin, может быть написан лучше с использованием цикла. Перепишите код так, чтобы устранить оператор goto.
begin:
int sz=get_size();
if (sz<=0) {
goto begin;
}

Что делает программа с меткой? Если переменная sz меньше нуля, то возвращается по метке и пытается получить еще одно значение, которое удовлетворит условию.
Значит нужно просто получать значения переменной в цикле, пока одно из них не удовлетворит условию:

int sz=get_size();
while (sz<=0)
sz=get_size();

Добавить комментарий