#1514894SVlad=96300215> компиляторы могут наоптимизировать.
Могут именно потому, что в стандарте написано про undefined behavior. Чисто формально программа вы этом случае может хоть диск форматировать - undefined же.)
На практике всё таки происходят не столь разрушительные, но всё равно странные вещи:
https://avva.livejournal.com/3500861.html#1514874itsnotrobotsАвтор=96305798А здесь можно не понимать, это фансервис для программистов #1514855Anonymous=96324310вот и настал этот день :)
я лучше понимаю комикс, чем комментарии к нему :)#1514843HJK=96333161>На самом деле там undefined behavior
Если правильно помню, там просто флаг в регистре выставляется и все - его можно игнорировать. Хотя интерпретаторы работают с виртуальной машиной, так что может быть что угодно да и компиляторы могут наоптимизировать.#1514819SVlad=96350516> а я думал это изящное решение как в С типа INT_MIN - 1 == INT_MAX
На самом деле там undefined behavior.) Но вроде все компиляторы просто следуют тому, что происходит в целевом процессоре - а там обычно зацикливание.#1514818HJK=96351176Оу, в PHP действительно PHP_INT_MIN -1 == PHP_INT_MIN а я решил, что это изящное решение как в С типа INT_MIN - 1 == INT_MAX.
Упс второй код что-то мне напоминает - у меня как то так доступ к БД был реализован. только еще сверху завернуто в автомат состояний с переменным временем для повторных попыток доступа. Через 10 лет теперь я сам не помню как это работает.
Отредактировано «HJK» 12.02.2023 21:17:20
#1514810SVlad=96352942https://www.php.net/manual/en/language.types.integer.php
If PHP encounters a number beyond the bounds of the int type, it will be interpreted as a float instead. Also, an operation which results in a number beyond the bounds of the int type will return a float instead.
В пыхе нет переполнения - превращаем во float и фигачим дальше. Там он рано или поздно или дойдёт до минус бесконечности и там и останется, так как -INF-1 == -INF, или вообще застрянет по дороге, когда шаг значений в float станет сильно больше 1 и число просто перестанет уменьшаться. #1514805itsnotrobotsАвтор=96354980Пожалуй, на переполнении он действительно закончится. Я подумаю на эту тему. Ну то есть, моя идея была в том, что это действительно бесконечный цикл :) Мне кажется, так ещё смешнее.
#1514800agogin=96356230#1514799
там от единицы вниз в отрицательную зону уходит, а не вверх до 10 как видимо задумывалось. #1514799ForNeVeR=96356411Такой ли уж вечный тут был цикл? Разве он не закончится на переполнении? Или какая там в пыхе система типов?#1514798itsnotrobotsАвтор=96356415потому что так надо показывать ":)"#1514796ForNeVeR=96357000Я не понял, почему у неё голова съезжает на бок.#1514795itsnotrobotsАвтор=96357306Есть ещё фича редакторов кода. В них можно посмотреть историю исправлений, в том числе вывести, кто писал какую строку. Часто можно видеть решение от одного человека, и сразу понятно, что оно не работает. Потом бывает исправление строками от другого человека. Иногда оно смешное.
Или ещё байка. Как-то раз у меня был коллега. Он писал код так, что каждый раз, когда у нас был баг, я точно знал, что это в его коде. Также он форматировал не так, как в остальном проекте. И я специально его не поправлял. Потому что по форматированию было удобно видеть, где надо искать косяк.
#1514793SVlad=96358169Хм, ну в начале мы имеем цикл, который по факту выполнится 2 раза, для i=1 и i=0. На втором проходе он выйдет - и это фикс Михалыча. А до этого был вечный цикл.
А на втором - попытка достучаться до сервера второй раз, если первый раз пришёл нулевой ответ.
И судя по имени индуса в первом блоке, просто кусок скопирован откуда-то и потом некорректно поправлен под нужды. Уверен, там на самом деле вообще один проход нужен. #1514792SVlad=96358450Хм, похоже, и правда всё идёт к тому, что это не киберпанк-зомбиапокалипсис, а производственный роман про отлов легаси бага, приправленный буйной фантазией Озимова.#1514790agogin=96359117Тот самый дальний кордон куда Михалыч привёз какую то херотень, которая на 2-м VR уровне выглядит как метеорит нацеленный на землю.
Что там интересно? Дроп базы по условию? #1514785agogin=96361952Огонь вообще. Очень интересно#1514770itsnotrobotsАвтор=96370891Это был аргумент в коде под Андроид, который передаётся в intent как bundle, и этот аргумент передавался между порядка 10 Activity, в разной форме. Про классы это я упрощённо сказал.
Могут именно потому, что в стандарте написано про undefined behavior. Чисто формально программа вы этом случае может хоть диск форматировать - undefined же.)
На практике всё таки происходят не столь разрушительные, но всё равно странные вещи:
https://avva.livejournal.com/3500861.html
я лучше понимаю комикс, чем комментарии к нему :)
Если правильно помню, там просто флаг в регистре выставляется и все - его можно игнорировать. Хотя интерпретаторы работают с виртуальной машиной, так что может быть что угодно да и компиляторы могут наоптимизировать.
На самом деле там undefined behavior.) Но вроде все компиляторы просто следуют тому, что происходит в целевом процессоре - а там обычно зацикливание.
Упс второй код что-то мне напоминает - у меня как то так доступ к БД был реализован. только еще сверху завернуто в автомат состояний с переменным временем для повторных попыток доступа. Через 10 лет теперь я сам не помню как это работает.
If PHP encounters a number beyond the bounds of the int type, it will be interpreted as a float instead. Also, an operation which results in a number beyond the bounds of the int type will return a float instead.
В пыхе нет переполнения - превращаем во float и фигачим дальше. Там он рано или поздно или дойдёт до минус бесконечности и там и останется, так как -INF-1 == -INF, или вообще застрянет по дороге, когда шаг значений в float станет сильно больше 1 и число просто перестанет уменьшаться.
там от единицы вниз в отрицательную зону уходит, а не вверх до 10 как видимо задумывалось.
Или ещё байка. Как-то раз у меня был коллега. Он писал код так, что каждый раз, когда у нас был баг, я точно знал, что это в его коде. Также он форматировал не так, как в остальном проекте. И я специально его не поправлял. Потому что по форматированию было удобно видеть, где надо искать косяк.
А на втором - попытка достучаться до сервера второй раз, если первый раз пришёл нулевой ответ.
И судя по имени индуса в первом блоке, просто кусок скопирован откуда-то и потом некорректно поправлен под нужды. Уверен, там на самом деле вообще один проход нужен.
Что там интересно? Дроп базы по условию?
оно хоть как значение передавалось, а не как ссылка?
...Редрик Шухарт?