Andrei
Я говорю о том что ситуация странная.
Andrei
Да и этот двойной цикл можно переписать через одиночный.
Andrei
Оптимально по количеству ветвлений.
Anonymous
Ned
ни одной строкой больше в итоге
Ned
я решил ща погуглить, чем же так плох goto и в чём его обвиняют
Ned
помимо нестабильности и сложности и всякое такое
Ned
опальный он какой-то
Ned
в итоге иногда всё же лучше применять, да
Ned
в принципе я своё мнение публично меняю
Ned
но! в любом случае любой код нужно снабжать умеренными комментариями. и с ГОТО и без него. порой и без ГОТО чёрт ногу сломит в чьей-либо писанине.
Ned
так сломит, что не отдебажить ни вникнуть толком
Anonymous
Goto и его метки всегда надо комментировать
Ned
с другой стороны может быть ситуация вроде:
goto lol;
while(1) {
int a = 1;
lol:
++a;
}
Anonymous
Например
...
goto label1; //goes to label1 on line 111
...
label1: //can be accessed from gotos on lines 11 and 34
...
Anonymous
Anonymous
Ned
он может попадать в чужие области видимости после настройки переменных в этих областях
Ned
или проскакивать инициализаторы какие-нить
Ned
и прочее
Ned
самое время затестить
Anonymous
Anonymous
Это не C, где он может прыгнуть из функции в функцию
Ned
или он это решает?
Ned
мол, в большую можно, а в меньшую низя?
Anonymous
Anonymous
Не помню
Anonymous
Давно на шарпе не писал
Ned
g++ кинул замечание
Ned
то есть даже не предупреждения
Ned
мол, скачок crosses initialization
Ned
вру
Ned
кинул ошибку
Anonymous
Ned
правда, с -fpermissive это порешается
Ned
более того, прога не падает, если -fpermissive
Ned
а вполне стабильно обрабатывает эту канитель
Ned
правда вот, если поиграться с динамической памятью, думаю, можно будет поймать крэш
Ned
Ned
поиграйтесь, короч
ඞ
Anonymous
ඞ
ඞ
ඞ
Ну так она для этого и сделана
ඞ
Ned
мне ктКреатор запустил какой-то парень, написавший про goto
ඞ
Andrei
ඞ
ඞ
Зачем так?
ඞ
Форы
Ned
ඞ
Ned
Ned
Форы
затем что мне чуть выше дали пример кода, который надо поправить
Ned
оттудова я и плясал
Andrei
Блин. С планшета неудобно набирать.
Andrei
Ну не суть в общем. Просто в один фор это пишется.
Andrei
Два индекса
Andrei
Условие через &&
Andrei
И инкремент с тернарым оператором.
Andrei
Или, что то же самое, через внешний for(;;) и внутри просто инкрементить что надо.
Andrei
Но вообще да, это кажется единственный оправданный вариант использования goto
Andrei
В MISRA например.
Andrei
А, ну и да, еще вариант, но плохой: i=10; break;
🦥Alex Fails
🦥Alex Fails
🦥Alex Fails
Andrei
В c++ тоже есть.
Andrei
Не не нужно как правило.
🦥Alex Fails
Ага