@ProCxx

Страница 85 из 2477
Andrei
16.04.2016
17:37:18
Да и этот двойной цикл можно переписать через одиночный.

Оптимально по количеству ветвлений.

Ned Ogl
16.04.2016
17:43:48
for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ } }
for (int i = 0, lol = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { if (exit_cond) {++lol; break;} } if (lol) break; }

Google
Ned Ogl
16.04.2016
17:45:16
Выглядит громоздко
немножко подредактил

ни одной строкой больше в итоге

я решил ща погуглить, чем же так плох goto и в чём его обвиняют

помимо нестабильности и сложности и всякое такое

опальный он какой-то

[Anonymous]
16.04.2016
17:46:49
Ned Ogl
16.04.2016
17:46:52
в итоге иногда всё же лучше применять, да

в принципе я своё мнение публично меняю

но! в любом случае любой код нужно снабжать умеренными комментариями. и с ГОТО и без него. порой и без ГОТО чёрт ногу сломит в чьей-либо писанине.

так сломит, что не отдебажить ни вникнуть толком

[Anonymous]
16.04.2016
17:49:12
Goto и его метки всегда надо комментировать

Ned Ogl
16.04.2016
17:49:35
с другой стороны может быть ситуация вроде: goto lol; while(1) { int a = 1; lol: ++a; }

[Anonymous]
16.04.2016
17:50:16
Например ... goto label1; //goes to label1 on line 111 ... label1: //can be accessed from gotos on lines 11 and 34 ...

Google
Ned Ogl
16.04.2016
17:51:01
Ой, так делать не надо
о чем и речь, собственно потому-то он и признан прародителем нестабильности

[Anonymous]
16.04.2016
17:51:33
с другой стороны может быть ситуация вроде: goto lol; while(1) { int a = 1; lol: ++a; }
Кстати, gcc и clang вроде кинут warning при таком коде

Ned Ogl
16.04.2016
17:51:34
он может попадать в чужие области видимости после настройки переменных в этих областях

или проскакивать инициализаторы какие-нить

и прочее

самое время затестить

[Anonymous]
16.04.2016
17:52:17
он может попадать в чужие области видимости после настройки переменных в этих областях
В C# кстати goto может ходить только в своеё области видимости

Это не C, где он может прыгнуть из функции в функцию

Ned Ogl
16.04.2016
17:52:40
В C# кстати goto может ходить только в своеё области видимости
а вот это не всегда правильно. как тогда выходить из цикла в большую область?

или он это решает?

мол, в большую можно, а в меньшую низя?

[Anonymous]
16.04.2016
17:53:00
Не помню

Давно на шарпе не писал

Ned Ogl
16.04.2016
17:55:21
g++ кинул замечание

то есть даже не предупреждения

мол, скачок crosses initialization

вру

кинул ошибку

Google
[Anonymous]
16.04.2016
17:56:12
Ned Ogl
16.04.2016
17:56:35
правда, с -fpermissive это порешается

более того, прога не падает, если -fpermissive

а вполне стабильно обрабатывает эту канитель

правда вот, если поиграться с динамической памятью, думаю, можно будет поймать крэш

поиграйтесь, короч

Penter
16.04.2016
18:03:52
coda
16.04.2016
18:07:46
Пальцами
молодец

Penter
16.04.2016
18:09:02
coda
16.04.2016
18:09:04
поиграйтесь, короч
ты мне студию запустил

Penter
16.04.2016
18:09:19
Ну так она для этого и сделана

Ned Ogl
16.04.2016
18:09:46
ты мне студию запустил
ура, я научился запускать свои процессы на чужой машине

Penter
16.04.2016
18:10:27
ура, я научился запускать свои процессы на чужой машине
Может уже удолишь свои сиськи с авы, трап?

Ned Ogl
16.04.2016
18:10:35
мне ктКреатор запустил какой-то парень, написавший про goto

Andrei
16.04.2016
18:10:45
Penter
16.04.2016
18:10:55
Зачем так?

Форы

Google
Ned Ogl
16.04.2016
18:11:07
Может уже удолишь свои сиськи с авы, трап?
только если подаришь мне фотку своих

Penter
16.04.2016
18:11:16
Ned Ogl
16.04.2016
18:11:17
Форы
затем что мне чуть выше дали пример кода, который надо поправить

оттудова я и плясал

Andrei
16.04.2016
18:13:25
Блин. С планшета неудобно набирать.

Ну не суть в общем. Просто в один фор это пишется.

Admin
ERROR: S client not available

Andrei
16.04.2016
18:13:59
Два индекса

Условие через &&

И инкремент с тернарым оператором.

Или, что то же самое, через внешний for(;;) и внутри просто инкрементить что надо.

Но вообще да, это кажется единственный оправданный вариант использования goto

В MISRA например.

А, ну и да, еще вариант, но плохой: i=10; break;

Ned Ogl
16.04.2016
18:46:28
в Си еще есть setjmp/longjmp
да, ещё одна интересная штука из области неизученного

Andrei
16.04.2016
18:47:35
В c++ тоже есть.

Google
Andrei
16.04.2016
18:47:47
Не не нужно как правило.

Alex Фэils?︙
16.04.2016
18:48:02
Ага

Можно корутины попробовать реализовать на них

Andrei
16.04.2016
18:48:48
Корутины эффективнее делаются по-другому. На всех платформах.

На винде через нейтив файберы

На линуксе ucontext_t

На маке 20 строчками на ассемблере.

Alex Фэils?︙
16.04.2016
18:50:01
Andrei
16.04.2016
18:50:41
Ну вся связка. Convertthreadtofiber и switchfiber

Alex Фэils?︙
16.04.2016
18:50:50
Да, кул вещь

Andrei
16.04.2016
18:50:52
Createnewfiber

Я писал на прошлой работе полноценную кросплатформенную либу для корутин, совмещенных с ядерной io диспетчеризацией.

Alex Фэils?︙
16.04.2016
18:51:41
С помощью SwitchToThread можно классно балансировать нагрузку

Andrei
16.04.2016
18:53:58
Нет, но есть проблема :3

Короче, считай, что да.

Alex Фэils?︙
16.04.2016
18:54:30
надо тоже как упрвжнение написать

Andrei
16.04.2016
18:54:53
Это упражнение заняло около полугода работы.

Alex Фэils?︙
16.04.2016
18:55:07
Ого

Ned Ogl
16.04.2016
18:55:26
а кто мне объяснит, что такое корутин?

Страница 85 из 2477