Няшная / Говнокод #27103 Ссылка на оригинал

0

  1. 1
#define LEAP_YEAR_OR_NOT(year)( ( year % 4 ) ? ( 0 ) : ( 1 ) )

Тот кто это писал, видимо рассуждал примерно так:

- В 2100 году это конечно забагует, но это будет уже не моя проблема.

Запостил: j123123 j123123, (Updated )

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

  • Хотя вот если существует реинкарнация, его этот баг может задеть в следующей жизни. Или если крионика, омоложение какое-то. Тут надо хорошо подумать.

    (да, код писался после 2000-го)
    Ответить
    • Кстати это довольно любопытный способ поднасрать без последствий. Сделать незаметный баг в хуйне с датами, который сработает через 300 лет как бомба с часовым механизмом, археологи будущего возможно даже найдут автора этого бага, но смогут разве что нассать ему на могилу (но ему уже будет пофиг).
      Ответить
      • Ну это надо сделать что-то прям настолько охуенное, что оно через 300 лет ещё кому-то нужно будет...
        Ответить
        • Например прошивку для очередного космического аппарата.
          Ответить
          • Она будет на джаваскрипте чтобы космонавты ее могли сами поправить.

            З.Ы. У crew dragon'ов гуйня на джаваскрипте.
            Ответить
              • Примерно через 296 тысяч лет «Вояджер-2» разойдётся с Сириусом на расстоянии 4,3 светового года.

                И никаких переполнений, заметьте. Вот раньше умели делать, а?
                Ответить
                • Ему будет пофиг на переполнения, ритеги и так уже почти сдохли.
                  Ответить
            • undefined тысяч километров до цели. Желаете [object Object]?
              Ответить
            • > З.Ы. У crew dragon'ов гуйня на джаваскрипте.

              А "бэкенд" на PHP?
              Ответить
    • Ну а оно и не нужно. Когда там дата слетает, оно выставляет 01.01.2000 (кстати это баг, надо 2001 выставлять)
      Прошлого не существует.
      Ответить
      • Это ещё ладно. Я видел телефон на котором будущего не существовало. Походу тупо вбили календарь до 2015, подумав что всё равно столько юзать не будут.
        Ответить
      • > (кстати это баг, надо 2001 выставлять)

        Хотя нет, 2000 ведь на 400 делится. Так что если считать с этого момента этот код забагует в прошлом первый раз в 1900 и в будущем в 2100. До 2100 эту хрень вряд ли кто будет использовать, так что всё нормально. Археологи разве что откопают на помойке и обнаружат баг.
        Ответить
        • > До 2100 эту хрень вряд ли кто будет использовать,

          - фраза двусмысленная, русский язык сложная
          Ответить
          • Ага, и "или" обычно как xor воспринимается, противопоставляя ветки друг другу.
            Ответить
  • Ну да, тем более если там 32-битная дата, которая и так в 2038 переполнится.
    Ответить
    • неоспоримое преимущество макросни перед инлайнерством состоит в том, что оно работает любыми типами:)
      Ответить
            • % много где не работает, тут ведь не сказано, какой тип
              нужен std::is_integral?

              хотя ведб и так кормпиляция упадет, но лучше так
              #include <type_traits>
              template<typename T>
              inline bool is_leap(T year) {
                  static_assert(std::is_integral<T>::value, "petuh");
                  return (year % 4);
              }
              Ответить
          • "4" - какая-то анскильная питушня. Оно же не будет работать как Num a => a, или конпелятор догадается?
            Ответить
    • Да, такой проверки вполне хватит для unix времени на всём допустимом диапазоне.

      Минимальная дата в знаковом 32-битном представлении — 13 декабря 1901 года, 20:45:52 UTC (0x80000000, −2 147 483 648 секунд от 1 января 1970 года).

      А 2038 это сильно меньше чем 2100
      Ответить
  • В 2038-м году забагуют программы, хранящие дату в int32_t.

    Ещё через 68 лет (т. е. в 2106-м году) забагуют программы, хранящие дату в uint32_t.

    Код написан с расчётом, что всё равно надо будет переписывать.
    Ответить
    • Поэтому надо в bigint хранить, чтоб уж наверняка. Хотя тогда слишком большая дата может всю память занять.
      Какое несовершенство мира )))
      Ответить
    • Кто-то отмечал 1600000000 timestamp, кстате?
      Ответить
  • К слову, а вдруг там за 100 лет в землю ёбнет астероид, орбитальные параметры изменятся и придётся вычислять високосность по-другому?
    Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8