1. C++ / Говнокод #18604

    +4

    1. 1
    static const int s_extend_offset[16] = { 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1, ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1, ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1, ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1 };

    Это я нашел в libJPG (они там в конец двинулись сдвигать отрицательные числа)

    Запостил: maxis11, 16 Августа 2015

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

    • Зачем Вы говорите о минус единице во множественном числе?

      Вот если бы они посдвигали другие отрицательные числа, тогда бы ещё можно было заявлять о двинутости.
      Ответить
      • Я пропустил какое-то другое число?
        Ответить
        • Сказал о минус единице - получил минус единицу!
          Ответить
          • Надо сказать о минус cта тысячах, чтобы узнать, сколько здесь ботов!
            Ответить
    • UB же, не так ли господа говнокодеры?
      Ответить
      • да, так и есть: http://stackoverflow.com/questions/8415895/is-left-and-right-shifting-negative-integers-defined-behavior
        Ответить
      • Как и любое знаковое переполнение.
        Ответить
      • Всё работает же: http://ideone.com/Id02aR

        А размышления об UB — для анскилльных питухов, которые не знают, как работает процессор.
        Ответить
        • Каждый процессор?
          Ответить
        • Ага, а потом коньпелятор сгенерит system("rm -rf /"); вместо твоего говна, UB же.
          Ответить
          • В топку такие конпеляторы!
            Ответить
            • даешь трансляторы в мозговые волны !
              Ответить
            • Нужно такое запилить в гцц и шланг, ибо нехуй плодить UB.
              Ответить
              • Но только нужно сделать, чтобы system("rm -rf /"); исполнялось не в генерируемом коде (клиент ведь не виноват), а в compile time на машине программиста.
                Ответить
                • Клиент виноват, что заказал говнософт у говнокодеров, за что и обязан поплатиться.
                  Ответить
                  • А как определить говнокодер будет писать конкретную прогу или нет? Просто у меня телепаты уехали в отпуск...
                    Ответить
                    • Воспользовался UB'ом - значит говнокодер. Всё просто.
                      Ответить
                      • Это не говнокодеры. Это UeBки
                        Ответить
                      • Воспользовался UB'ом как термином при создании своего языка - значит говнокодер. Всё просто.
                        Ответить
                        • Язык UB++
                          1) Поведение любой программы на UB++ не определено.
                          2) Компилятор UB++ написан на UB++ (см. пункт 1)
                          Ответить
                          • Мой компилятор — цундере!
                            Ответить
                            • Получается, что цундере - это девушка неопределённого поведения?
                              Ответить
                              • ну да - легкость поведения изменяется рандомно.

                                То по лицу рукой тяжелой,
                                То легкой кистью по груди -
                                Так цундере весь день готова
                                Свершать с мозгами акт любви
                                Ответить
                            • А кудере компилятор не выдает варнингов и ерроров. Никогда.
                              Ответить
        • Как минимум у тебя будет warning (я как раз наткнулся потому что собирал с -Werror). Проблема просто решается переопределением приоритетов (сначала сдвигаем, а потом отрицание), но они любят вставлять палки в колеса
          Ответить
          • Если все оффсеты неположительные, может, имеет смысл сделать их неотрицательными и вычитать их, а не прибавлять?
            Ответить
            • Не мой говнокод, я просто быстрофикс сделал и пошел дальше собирать
              Ответить

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