1. Pascal / Говнокод #19244

    −41

    1. 1
    if (abs(i-i1)<1) or (abs(j-j1)<0) then continue;

    Модуль меньше нуля.

    Запостил: Janycz, 25 Декабря 2015

    Комментарии (33) RSS

    • Детектор военного времени.
      Ответить
    • Может он с жабы пришёл. Там модуль спокойно может быть меньше нуля. Кстати, что паскаль делает, когда пытаешься взять модуль минимального целого числа?
      Ответить
      • > что паскаль делает
        У паскаля вроде как контроль переполнений был?
        Ответить
        • В паскале по умолчанию работает контроль переполнений. Но его можно как-то отключить.
          Ответить
          • У этого ружья есть защита от стрельбы в ногу. Но её можно как-то отключить.
            Ответить
      • > Там модуль спокойно может быть меньше нуля.
        При каких случаях? Почему?
        Ответить
        • Потому что unsigned типов нету, а модуль числа Тараса немного не влезает в signed.

          http://ideone.com/yHfCaR
          Ответить
          • А что было бы если бы были unsigned типы? Исключение при присваивании unsigned к signed? Те же грабли.
            Ответить
            • > Исключение при присваивании unsigned к signed?
              Почему бы и нет? И при касте в меньший тип - тоже. Всё-таки жаба не сишка, могли себе такую проверку позволить...

              Ну вот в шарпе грамотно сделали - кидают исключение, если что-то не влезает. Байтоёбов и пирфомансодрочеров это, конечно, немного расстраивает. Но зато остальным можно спокойно спать...
              Ответить
              • Эти проверки разве нельзя отключить? На худой конец есть нативный код.
                Ответить
              • >Байтоёбов и пирфомансодрочеров это, конечно, немного расстраивает
                НЕМНОГО?
                Не нравится байтоёбство (а именно с ним рано или поздно придётся иметь дело в типе int), не нужен пирфоманс? - бери BigInteger и вперёд.
                Ответить
            • Проблема в несимметричности.
              В прямом коде есть положительный ноль
              1000 0000 0000 0000

              >Исключение при присваивании unsigned к signed? Те же грабли.
              Возможно даже хуже.
              Ответить
        • https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#abs%28int%29

          Note that if the argument is equal to the value of Integer.MIN_VALUE, the most negative representable int value, the result is that same value, which is negative.
          Ответить
        • Потому, что min_value + max_value = -1
          Ответить
      • А может с ассемблера.
        Ответить
        • Вероятность стремиться к нулю, поскольку фрагмент взят из решения олимпиадной задачи школьником-девятиклассником.
          Ответить
          • Ну и что. Я в девятом вполне понимал ассемблер 8080, а между 10 и 11 запилил его эмулятор на паскале и асме от 8086... А сейчас у школоты намного больше возможностей...

            Ничего сложного и магического в асме нету. Команды, регистры и ячейки памяти понять намного проще, чем все эти ваши замыкания, ООП и MVC. Просто набор инструкций у x86 сильно разжирел за последнее время и тащит за собой хвост legacy говна с 80х годов...
            Ответить
            • > Команды, регистры и ячейки памяти понять намного проще, чем все эти ваши замыкания, ООП и MVC.
              +
              И главное
              в асме всё просто и понятно, строгая типизация, данные никуда не теряются:
              mul i32,i32 => i64

              add сохраняет верхний бит в специальный thread-local.
              Ответить
              • И даже переполнения можно нормально поймать. Что на той же сишке сделать без костылей нереально.
                Ответить
                • >Что на той же сишке сделать без костылей нереально.
                  Что практически в любом яву сделать без костылей нельзя.

                  Вот почему в жабах/с++/с# не сделать системный thread-local, хранящий of, cf и прочие радости, которые есть на всех машинах.

                  Thread.currentThread().getFlags() & OVERFLOW //блять, неужели так трудно:?
                  К слову в жабе есть interrupt flag, лол. Технология антиисключений может и должна быть расширена.
                  Ответить
    • Чувствую, что где-то здесь скрывается модуль мнимой единицы.
      Мне недавно на гитхабе это приснилось. Как пить дать видел.
      Ответить

    Добавить комментарий