Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.9.146] |
|
Страницы: (12) « Первая ... 3 4 [5] 6 7 ... 11 12 все ( Перейти к последнему сообщению ) |
Сообщ.
#61
,
|
|
|
Тебя может и не напрягают функции по тыще строчек, а меня напрягают. И какую проблему он там решает, какую не решает мой пример? Цитата OpenGL @ Да ладно. Ну вот тебе ещё примеры из ядра линукса, git, quake 3. Дальше искать влом. Ну я выше пример реализации raii и исключений привел на С, я там не нашел goto. И? Цитата OpenGL @ Но, ты, конечно, можешь считать, что авторы всех этих программ - дебилы и говнокодеры, не догадавшиеся, что можно было просто обратиться к KILLER-у с исходников с вопросом "как переписать без goto" - я спорить с этим даже не буду Даже K&R пишут что всегда можно обойтись без goto, и даже они считают что многие этим goto злоупотребляют. Т.е. по сути они согласны с моей точкой зрения. Но ведь они такие же дебилы видимо как и я? Все тру папки юзают goto ведь. Цитата OpenGL @ О чём ты? Ты вполне себе ограничен - религиозной заморочкой "писать код без goto", которая, очевидно, мешает в определённых случаях писать более компакнтный и читаемый код Ну собственно как и ты. Ты ведь раньше писал что тоже не используешь goto. А да, один раз на каком то делфи заюзал. Не мешает тебе это ограничение? Выходит мы с тобой оба ограничены? Или просто мыслим так, что в голову не приходит использование goto ? Как считаешь? Я еще раз повторюсь - я не сталкивался с задачами - где без goto нереально, либо мега сложно было бы реализовать что то. Возможно такие задачи есть, я с этим не спорю, я у вас просил их привести. Вы морозитесь, ну синтетические примеры с кучей ограничений разве что приводите. Цитата OpenGL @ Перепиши. Вот зуб даю - если у тебя получится не хуже, чем с goto, то тебе тут не только я - половина участников темы плюсы поставит. От себя вообще три плюса обещаю С теми ограничениями, которые ты придумал? Т.е. обязательно должен быть тройной цикл и обязательно нужно попасть внутрь этого тройного цикла минуя внешние? Даже и не буду пытаться насиловать себе мозг. Потому что считаю что эти ограничения несостоятельны. Убери ограничения, тогда будет время - попробую. Нам же важен конечный результат, а не как именно это будет реализовано? Цитата OpenGL @ И что? Или ты не заметил, что тут решается задача "запрыгнуть внутрь циклов", и это не goto cleanup, смысла котоого в плюсах немного? Конечно заметил. Я к тому, что это не кастрированный Си, где нет средств для реализации с помощью других технологий. |
Сообщ.
#62
,
|
|
|
Цитата D_KEY @ Нестандартное расширение языка. Такие штуки допустимы в библиотеке компилятора, но крайне нежелательны в пользовательском коде. Мир С-компиляторов упомянутыми тремя компиляторами не ограничивается. даже если вы пишите на C, рассмотрите варианты с __finally для ms-компилятора и __attribute__ ((__cleanup__(f))) для gcc/clang. |
Сообщ.
#63
,
|
|
|
Майкрософт тоже писало ATL/MFC на другом языке. У них это приемлемо использовать goto в методе класса, а мне не приемлемо, странно как то |
Сообщ.
#64
,
|
|
|
Они могут многое себе позволить, хотя бы потому, что свою операционную систему собирают собственным компилятором. А вот ты пишешь программы для вообще говоря не совсем известного компилятора. Конечно, если ты ограничиваешься программированием для себя, ты можешь пользоваться любыми средствами.
|
Сообщ.
#65
,
|
|
|
Цитата amk @ Они могут многое себе позволить, хотя бы потому, что свою операционную систему собирают собственным компилятором. То есть это сразу переводит уровень их кода из говнокода в код с хорошим стилем программирования? Странно Цитата amk @ А вот ты пишешь программы для вообще говоря не совсем известного компилятора. Конечно, если ты ограничиваешься программированием для себя, ты можешь пользоваться любыми средствами. Для С++ сного вроде как. |
Сообщ.
#66
,
|
|
|
Цитата amk @ Нестандартное расширение языка. Такие штуки допустимы в библиотеке компилятора, но крайне нежелательны в пользовательском коде. Очень много софта пишется под одну инфраструктуру. В том же ядре линукса полно gcc-специфики. И это нормально. В nginx специфичные вещи обернуты. Можно пойти по такому пути. Цитата Мир С-компиляторов упомянутыми тремя компиляторами не ограничивается. Нужно больше конкретики. Кроме того, не забывай, что это лишь один из вариантов, что я предложил |
Сообщ.
#67
,
|
|
|
Цитата KILLER @ Тебя может и не напрягают функции по тыще строчек, а меня напрягают. Откуда "тыще"? Функция, о которой идёт речь, всего-то 150 строк занимает, включая комментарии, пустые строки и фигурные скобки, да и к тому же она простая как палка. Переписывание её на паттерн do..while просто зря добавит дополнительный нафиг не нужный отступ практически во всё тело функции. Цитата KILLER @ И какую проблему он там решает, какую не решает мой пример? Переход из цикла к cleanup, очевидно Цитата KILLER @ Ну я выше пример реализации raii и исключений привел на С, я там не нашел goto. И? А что "и"? Очевидно, что есть случаи, когда с goto читаемей и удобнее, а есть, когда и без него удобно всё делается. Твой пример, очевидно, из второй группы. Что ты им сказать хотел? Цитата KILLER @ Даже K&R пишут что всегда можно обойтись без goto, и даже они считают что многие этим goto злоупотребляют. Т.е. по сути они согласны с моей точкой зрения. Киля, прикинь, у меня тоже есть эта книга. Вот цитата оттуда: Цитата В языке "C" предусмотрен и оператор GOTO, которым бесконечно злоупотребляют, и метки для ветвления. С формальной точки зрения оператор GOTO никогда не является необходимым, и на практике почти всегда можно обойтись без него. Мы не использовали GOTO в этой книге. Тем не менее, мы укажем несколько ситуаций, где оператор GOTO может найти свое место. Внимание, вопрос - ты утверждаешь, что приведённая цитата и твой опус эквивалентны? А с тем, что всегда можно обойтись без goto, или что без него многие задачи могут быть решены ничуть не сложнее, никто и не спорит, поэтому зачем ты это усиленно пытаешься доказать - непонятно Цитата KILLER @ Ну собственно как и ты. Ты ведь раньше писал что тоже не используешь goto. А да, один раз на каком то делфи заюзал. Хм. А можно я этот пост в рамочку и на стену отправлю - он доказывает, что ты изредка хоть что-то читать умеешь Цитата KILLER @ Не мешает тебе это ограничение? Выходит мы с тобой оба ограничены? А, нет, облом, ты не читатель Ну либо читатель, но не пониматель В чём заключается моё ограничение, если код с goto я написать могу, а ты - нет? Цитата KILLER @ Вы морозитесь, ну синтетические примеры с кучей ограничений разве что приводите. До-до-до, назови любой пример использования - синтетическим с кучей ограничений и дело в шляпе Цитата KILLER @ С теми ограничениями, которые ты придумал? Т.е. обязательно должен быть тройной цикл и обязательно нужно попасть внутрь этого тройного цикла минуя внешние? Даже и не буду пытаться насиловать себе мозг. Потому что считаю что эти ограничения несостоятельны. А, так ты не пишешь ничего сложнее helloworld-ов, раз не в состоянии представить, что задача в стиле "тройной цикл, есть возможность прервать в любом месте, и старт в случае прерывания - с того места, где произошла остановка" - вполне конкретная. Можно было это сказать сразу - тогда бы и срача на n страниц не было И кстати, мне недавно как раз такую задачу и надо было решать - вычислить с указанными выше условиями значения некой функции f(x, y, z) для всех возможных входных параметров. Правда, писалось на языке без goto, так что пришлось городить огород с вычислением всех индексов руками. Писал бы на С/С++ - сделал бы goto и не парился. Это считается, что я юзал goto на практике? Цитата KILLER @ Конечно заметил. Я к тому, что это не кастрированный Си, где нет средств для реализации с помощью других технологий. Ога, и что характерно, на просьбу продемонстрировать решение задачи с их помощью ты сливаешься простым "ограничения несостоятельны" |
Сообщ.
#68
,
|
|
|
Я вот не помню случая, когда я бы использовал goto в проде.
Но конкретно в той задаче goto выглядит неплохо. Хотя в прод, думаю, что в любой команде, такое бы не заапрувили и пришли к какому-то другому варианту. |
Сообщ.
#69
,
|
|
|
Цитата D_KEY @ Я тоже не помню. Но то, что пользовал, помню. Как-то вот так вот. Я вот не помню случая, когда я бы использовал goto в проде. |
Сообщ.
#70
,
|
|
|
Цитата OpenGL @ Переход из цикла к cleanup, очевидно Странно, а у меня его разве нету? Вообще то у него не к клинапу переход, а переход за циклы, очистка памяти и выход из функции. В моем примере ровно то же самое. Цитата OpenGL @ Откуда "тыще"? Функция, о которой идёт речь, всего-то 150 строк занимает, включая комментарии, пустые строки и фигурные скобки, да и к тому же она простая как палка. Переписывание её на паттерн do..while просто зря добавит дополнительный нафиг не нужный отступ практически во всё тело функции. Функция в 150 строк кода - тоже большая. И файл в 5 тыс строк большой. Попробуй проанализировать этот код глазами от начала до конца, не перематывая в конец. Не сможешь, либо тебе придется держать в уме с какого места ты прыгаешь. Потому что метку, которая находится в конце функции, и на которую прыгают в начале функции - глазами найти ты не сможешь. Тебе придется постоянно перематывать эту функцию туда обратно, чтоб понять логику. А без goto, ты сможешь прочитать не прыгая взад вперед по этой функции глазами. Цитата OpenGL @ А что "и"? Очевидно, что есть случаи, когда с goto читаемей и удобнее, а есть, когда и без него удобно всё делается. Твой пример, очевидно, из второй группы. Что ты им сказать хотел? Вы не привели таких случаев. Вы говорите о каких то мифических случаях, но приводите придуманные на коленке вилосипеды. Я так могу сказать - очевидно что есть случаи когда не нужно городить классов, и проектировать какие то наследования, паттерны и всякую хрень. Могу я этим аргументировать против ООП и все что с этим связано? Ведь смотри - зачем всякие эти стратегии, синглтоны, фасады, адаптеры, итераторы? Вот зачем все это городить? Ведь проще взять и писать в процедурном стиле. Вон в Си как то живут без всего этого и радуются. Нормально же. Но тем не менее на чуть более менее сложную системы - городят классы. Зачем? Если можно обойтись и функциями? Почему ты когда писал на Си не использовал такой мощный и очевидный инструмент как goto ? Может ты в Си с указателями не работал и память не выделял? Если не работал и не выделял память, значит ты на Си не писал. А если выделял - как же ты очищал ее без goto ? Твоя проблема, да и остальных защитников - в том, что вы защищаете уже написанные примеры. Понимаешь? Вот ты написал так, и тебе кажется что очевидно это круто. А на практике - это говнокод. Потому что еще раз. Когда ты пишешь программу, которая состоит максимум из 100 строк - да пиши там хоть вообще без циклов на одних goto. С этим еще наверное можно как то разобраться. Но когда у тебя большой проект, и везде понапиханы goto - это говорит лишь об одном, ты плохо спроектировал свою систему, раз юзаешь goto для очистки памяти. И сопровождать такой код - тебе будет труднее. Если мы говорим о велосипедах в 10 строчек, ок пусть там goto рулит. Хотя я всеравно его не использую, потому что мне нет необходимости его использовать. А если мы говорим не о велосипедах - то это значит, что ты нихрена не спроектировал, а просто написал в процедурном стиле там, где нужно было применять ООП. Вот и все. И доказываешь мне что тебе проще было написать в процедурном стиле, чем в ООП. Да написать тебе может было и проще. А понимать и сопровождать твой код - не проще. Цитата OpenGL @ Киля, прикинь, у меня тоже есть эта книга. Вот цитата оттуда: Ключевое слово там - может. А может и не найти. Часто ты прыгаешь из 4-ого по вложенности цикла(да даже из второго) в конец функции? Думаю что никогда, раз не юзаешь goto. И чего дальше? Почему ты не применяешь сам goto, но при этом за него топишь? Потому что рассматриваешь проблему с академической стороны, философствуешь. И хрен ты этот goto будешь использовать, останешься при своем. И ну что мне прикидывать? Цитата OpenGL @ эквивалентны? То есть ты сравниваешь предположение с утверждением и делаешь вывод что они эквиваленты? Сырые указатели или неуправляемый код в Java/Шарпах - зло, но тем не менее иногда прибегают к их использованию. Исключения в деструкторах - зло в кубе, но тем не менее есть случаи когда приходится их там обрабатывать. Цитата OpenGL @ А с тем, что всегда можно обойтись без goto, или что без него многие задачи могут быть решены ничуть не сложнее, никто и не спорит, поэтому зачем ты это усиленно пытаешься доказать - непонятно Это не я доказываю. Это вы мне доказываете что приведенный код без goto переписать нереально или сложно или будет херово и некрасиво, и накладываете ограничения в виде - а у тебя тут другой язык, а у тебя тут нет прыжка именно вот отсюда, вон в туда. А у тебя не тройной цикл, а у тебя еще что то не то. Цитата OpenGL @ Хм. А можно я этот пост в рамочку и на стену отправлю - он доказывает, что ты изредка хоть что-то читать умеешь Я посты все читаю всегда, внимательно. В отличии от вас. Я это уже говорил 100 раз. Где там я что забыл или не прочитал? Цитата OpenGL @ А, нет, облом, ты не читатель Ну либо читатель, но не пониматель В чём заключается моё ограничение, если код с goto я написать могу, а ты - нет? Твое ограничение заключается в том, что на словах ты Лев Толстой, а на деле, ну ты понял? Ты говоришь что можешь, но никогда не используешь. Ну и плюс ты не читатель. Потому что я тоже могу написать код с goto. И раньше я об этом писал. Один сел на жепу, когда я ему сказал что его пример не в тему. Хочешь тебя посажу, одной своей цитатой? Или ты сам найдешь? Цитата OpenGL @ До-до-до, назови любой пример использования - синтетическим с кучей ограничений и дело в шляпе А тут были какие то не синтетические примеры? Где? Покажи? Цитата OpenGL @ А, так ты не пишешь ничего сложнее helloworld-ов, раз не в состоянии представить, что задача в стиле "тройной цикл, есть возможность прервать в любом месте, и старт в случае прерывания - с того места, где произошла остановка" - вполне конкретная. Можно было это сказать сразу - тогда бы и срача на n страниц не было Я сложнее helloworl-ов, ничего никогда в жизни не писал. А еще могу сказать - что тройные циклы пишу ну очень редко. Еще с прошлой работы осталась привычка, что если вложенность цикла больше двух - значит код плохой, нужно бить на функции. И никак не могу от нее избавится представляешь? А чтоб прыгать внутрь тройного цикла или из тройного цикла на ружу, да еще с помощью goto - это вообще на моей практике пока такого не было. Зачем мне прыгать из тройного цикла наружу с помощью goto? Ради самого факта прыжка? Сформулируй словами такую задачу, чтоб не оставалось выбора, как написать тройной цикл и сделать такой прыжок. Я подумаю. И если напишу ее с goto, то тогда наверное ты меня убедил и я пересмотрю свои взгляды на использование goto. Ваши вопросы сродни - как ты будешь выходить из 10-ого по вложенности цикла сразу в конец функции. Но ответ вы в упор или не понимаете или не видите - я не пишу циклы с вложенностью 10. 10 - я намеренно тут написал, чтоб ты понял что с тремя циклами у меня работает примерно такая же логика. Хотя в принципе иногда и очень редко, когда мне лень разбивать на функции, и циклы маленькие я могу написать тройной цикл. Но по большому счету - это скорее исключение из правил, чем правило. Цитата OpenGL @ И кстати, мне недавно как раз такую задачу и надо было решать - вычислить с указанными выше условиями значения некой функции f(x, y, z) для всех возможных входных параметров. Правда, писалось на языке без goto, так что пришлось городить огород с вычислением всех индексов руками. Писал бы на С/С++ - сделал бы goto и не парился. Это считается, что я юзал goto на практике? Пфф, я же говорю "на словах я Лев Толстой, а на деле хрен простой". Вот когда будешь писать goto, тогда можешь бить себя пяткой в грудь и кричать что я применяю на практике goto. Я тоже могу много чего написать. Цитата OpenGL @ Ога, и что характерно, на просьбу продемонстрировать решение задачи с их помощью ты сливаешься простым "ограничения несостоятельны" В каком смысле? Ты про пример Qraizer? Ну давай я подумаю на досуге, перепишу его и тебе покажу. |
Сообщ.
#71
,
|
|
|
OpenGL, держи переписанный Qraizer'а код без goto. Я один раз проверил, особо не гонял. Если все гуд - жду от пол форума плюсов, плюс лично от тебя три штуки:
#include <windows.h> #include <io.h> #include <conio.h> #include <fstream> #include <iostream> int main() { int i(0), j(0), k(0), l(0); std::ofstream log; log.open("file.log", std::ofstream::out | std::ofstream::trunc); std::clog.rdbuf(log.rdbuf()); bool mega_ok = true; if (_access("savedstate.dat", 4) == 0) // Проверить, нет ли сохранённого состояния от предыдущего запуска { // Если есть, восстановить и продолжиться std::ifstream inFile("savedstate.dat"); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&i), sizeof(i)).gcount() == sizeof(i); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&j), sizeof(j)).gcount() == sizeof(j); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&k), sizeof(k)).gcount() == sizeof(k); mega_ok = mega_ok && inFile.read(reinterpret_cast<char*>(&l), sizeof(l)).gcount() == sizeof(l); if (mega_ok && (inFile.good() || inFile.eof())) { std::cout << "The saved state is successfully restored." << std::endl; //goto resume; } else return std::cerr << "The saved state restoring error. State file is wrong." << std::endl, 1; } for ( !mega_ok ? i = 0 : i=i; i<10; ++i) { for (!mega_ok ? j = 0: j = i; j<10; ++j) { for (!mega_ok ? k = 0:k = j; k<10; ++k) { for (!mega_ok ? l = 0:l = k; l<10; ++l) { //resume: if (kbhit() && getch() == '\x1B') // Проверить, не просят ли нас ESCпом прерваться { // Если да, сохранить состояние и выйти if (_access("savedstate.dat", 2) == 0) remove("savedstate.dat"); //! <<<<<< Закоментируй чтобы начать с определенного состояния std::ofstream outFile("savedstate.dat"); bool ok = true; ok = ok && outFile.write(reinterpret_cast<char*>(&i), sizeof(i)).good(); ok = ok && outFile.write(reinterpret_cast<char*>(&j), sizeof(j)).good(); ok = ok && outFile.write(reinterpret_cast<char*>(&k), sizeof(k)).good(); ok = ok && outFile.write(reinterpret_cast<char*>(&l), sizeof(l)).good(); if (!(ok && (outFile.good() || outFile.eof()))) return std::cerr << "The state saving error." << std::endl, 1; return std::cout << "The state successfully saved." << std::endl, 2; } /* ... */ std::clog << "i = " << i << ", j = " << j << ", k = " << k << ", l = " << l << std::endl; Sleep(1); } } } } std::cout << "Done... Pres any key..."; std::cin.get(); if (_access("savedstate.dat", 2) == 0) remove("savedstate.dat"); //! <<<<<< Закоментируй чтобы начать с определенного состояния std::clog.clear(); log.close(); return 0; } Плюс код инициализирующий начальным состоянием файл savedstate.dat //! СОхраняем состояние всех счетчиков начиная с 3 { int i(3), j(3), k(3), l(3); std::ofstream outFile("savedstate.dat"); bool ok = true; ok = ok && outFile.write(reinterpret_cast<char*>(&i), sizeof(i)).good(); ok = ok && outFile.write(reinterpret_cast<char*>(&j), sizeof(j)).good(); ok = ok && outFile.write(reinterpret_cast<char*>(&k), sizeof(k)).good(); ok = ok && outFile.write(reinterpret_cast<char*>(&l), sizeof(l)).good(); } Плюс, мержиловка онлайн тебе в помощь: https://www.diffchecker.com |
Сообщ.
#72
,
|
|
|
Цитата KILLER @ Странно, а у меня его разве нету? Твой пример - втупую переписанный код без осознания того, что это схема и, соответсвенно, того, в чём там реальная сложность, только и всего. И поскольку это уже было разжёвано не один раз, то я повторять смысла, что конкретно у тебя не так, не вижу - ты всё равно не поймёшь Цитата KILLER @ Функция в 150 строк кода - тоже большая. И файл в 5 тыс строк большой. Попробуй проанализировать этот код глазами от начала до конца, не перематывая в конец. Не сможешь, либо тебе придется держать в уме с какого места ты прыгаешь. Потому что метку, которая находится в конце функции, и на которую прыгают в начале функции - глазами найти ты не сможешь. Тебе придется постоянно перематывать эту функцию туда обратно, чтоб понять логику. А без goto, ты сможешь прочитать не прыгая взад вперед по этой функции глазами. Я - не неосилятор, как некоторые, и сразу понял, что делает обсуждаемая функция, равно как и понял логику её работы. Знал бы спецификацию http или семантику полей, в которые она пишет - понял бы полностью, вплоть до возможности не напрягаясь внести в неё изменения. ЧЯДНТ? Цитата KILLER @ Почему ты когда писал на Си не использовал такой мощный и очевидный инструмент как goto ? Может ты в Си с указателями не работал и память не выделял? Если не работал и не выделял память, значит ты на Си не писал. А если выделял - как же ты очищал ее без goto ? Потому что было не нужно На си я писал только пару олимпиадных задачек ради фана. Указатели там обычно используются так, как тебе даже в страшном сне не может присниться. А очищать память в этом случае просто нафиг не нужно - даже если её приходится выделять в куче, то проще забить на освобождение, ибо программа всё равно дольше пары секунд не проработает Цитата KILLER @ Ключевое слово там - может. А может и не найти. Капитан, перелогинься Кто тут с этим спорит вообще? Ну да, может и не найти, и в этом случае лучше написать без goto. Но ведь может и найти - что тогда? Цитата KILLER @ Часто ты прыгаешь из 4-ого по вложенности цикла(да даже из второго) в конец функции? Думаю что никогда, раз не юзаешь goto. Ты сам посчитаешь, сколько раз я говорил, что я не пишу на Си, поэтому самое частое применение goto - прыжок к очистке - мне не нужен, или это сделать мне? Цитата KILLER @ Потому что еще раз. Когда ты пишешь программу, которая состоит максимум из 100 строк - да пиши там хоть вообще без циклов на одних goto. С этим еще наверное можно как то разобраться. Но когда у тебя большой проект, и везде понапиханы goto - это говорит лишь об одном, ты плохо спроектировал свою систему, раз юзаешь goto для очистки памяти. И сопровождать такой код - тебе будет труднее. Внимание, вопрос - кто тут говорит, что надо писать программу, везде пихая goto? Цитата KILLER @ Я посты все читаю всегда, внимательно. В отличии от вас. Я это уже говорил 100 раз. Где там я что забыл или не прочитал? Да хоть вот тот пост, на который ты отвечаешь вот этой вот фразой - он явно показывает, что ты не прочитал, о чём идёт речь, иначе бы глупый вопрос - что ты забыл и не прочитал - ты бы не задавал. А глупый он потому, что в данной ветке дискуссии я не говорил, что ты что-то не прочитал, а даже наоборот - похвалил твою внимательность Цитата KILLER @ Еще с прошлой работы осталась привычка, что если вложенность цикла больше двух - значит код плохой, нужно бить на функции. Вау. А венгерский алгоритм, алгоритм Флойда или вышеописанная мной задача, где я "использовал" goto - перебор всех аргументов в функции f(x, y, z) ты тоже будешь разбивать на функции? Цитата KILLER @ Твое ограничение заключается в том, что на словах ты Лев Толстой, а на деле, ну ты понял? Ты говоришь что можешь, но никогда не используешь. А что такого? Я считаю, что юзать goto там, где он к месту - нормально. Можно даже усилить - юзать %something% там, где оно к месту - нормально. Ну а почему я сам это не делаю - на это может быть тысяча причин. Или ты делаешь всё, что считаешь нормальным? Цитата KILLER @ Потому что я тоже могу написать код с goto. И раньше я об этом писал. Один сел на жепу, когда я ему сказал что его пример не в тему. Хочешь тебя посажу, одной своей цитатой? Или ты сам найдешь? Я в курсе, что ты это говорил, но поскольку ты старательно пытаешься доказать, что goto, когда оно в тему, на самом деле всё ухудшает - я просто записал эту твою фразу в обычное балабольство |
Сообщ.
#73
,
|
|
|
OpenGL, и там посмотри, я забыл переменные инициализировать, я поправил. Хрен его знает - вроде делает вид что работает, но я толком не тестил.
|
Сообщ.
#74
,
|
|
|
Цитата KILLER @ OpenGL, держи переписанный Qraizer'а код без goto. Фиаско. У тебя, если ты дошёл до цикла, mega_ok всегда равно true. Как следствие, инициализация счётчиков цикла у тебя всегда будет идти по ветке false, т.е. ровно так, как в исходном цикле, если бы мы зашли в него как обычно. Иными словами - вне зависимости от того, что ты восстановил, ты пойдёшь крутиться в циклах с самого начала |
Сообщ.
#75
,
|
|
|
Цитата OpenGL @ У тебя, если ты дошёл до цикла, mega_ok всегда равно true С чего вдруг? |