Допустимые случаи использования оператора goto
retry: for(...) { for (...)
{...
if () goto retry;...
if () goto fatal; }
}
fatal:
Пример неправильного использования goto:
m1: for (i=0; i<n; i++)
{..if () goto m1;... }
Здесь имеется неявный внешний цикл, который не был замечен при проектировании программы. Исправленный вариант имеет вид:
while (1)
{ for (i=0; i<n; i++)
{ ...if () break;... }
if (i==n) break;
}