1. Си / Говнокод #17674

    +101

    1. 1
    2. 2
    char buf[4096];
    *((char*)&buf[14]) = 0x30;

    Запись значения в массив (такой способ обращения к элементу массива тщательно соблюдается на протяжении всех 25000 строк кода проекта)

    Запостил: refactor, 20 Февраля 2015

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

    • Похоже на работу хекс-рая.
      Хуем по губам, случайно на минус нажал.
      Ответить
      • К сожалению, это не обфускатор - это живой, закоренелый Ассемблерист, которого раз в пару лет заставляют переписывать его поделки на С++.
        Ответить
    • > *((char*)&buf[14]) = 0x30;

      убираем синтаксические подсластители:
      *((char*)&(*(buf+14))) = 0x30;

      убираем лишний каст:
      *(&(*(buf+14))) = 0x30;

      ну в натуре "туда сюда обратно"....
      Ответить
    • Подсуньте ему vector<bool>.
      Ответить
      • Си же.
        Ответить
        • Подсуньте ему C++
          Ответить
          • ([](int n){return *((char*)&buf[n]);})(14) = []{return 0x30;}()
            Ответить
            • Интересный стиль. Императивно-функциональный постмодернизм головного мозга.
              Ответить
              • Блин, как же долго я пытался стереть эту точку...
                Ответить
                • А я стер и выйграл приз
                  Ответить
                  • Новый монитор?
                    Ответить
                    • Новую точку.
                      Ответить
                      • круто, что у меня фон не белый у коментов, а то стер бы и ноут бы пришлось менять
                        Ответить
                        • >фон не белый
                          выгорел поди?
                          Ответить
                          • радужный скрипт
                            + аватарки и гк становиться похож на детский форум
                            Ответить
                            • >радужный скрипт
                              гвардии Ренли кегдана?
                              Ответить
                    • >Новый монитор?
                      Нет, старый. Года 3 уже. Думаю, есть ли смысл менять на 4K.
                      Ответить
                      • > Думаю, есть ли смысл менять на 4K.
                        ИМХО нет. Излишне дорого, операционки не особо дружат с такой плотностью точек на дюйм. Неудобно, в конце концов, если не развить способность воспринимать информацию углом зрения больше 3 градусов.
                        Ответить
                        • >больше 3 градусов.
                          Это через замочную скважину что ли с расстояния метра?
                          Ответить
                          • > Это через замочную скважину что ли с расстояния метра?
                            Почти. Это небольшое слово при чтении книги, поэтому обычные люди читают неторопливо по строчке, остальная информация за пределами этой небольшой области не воспринимается. Если верить одной книге [1], то этот угол можно расширить и осознанно читать страницу, проведя по ней взглядом сверху вниз.
                            [1] http://www.koob.ru/andreev/fastread
                            Ответить
                            • Ну тогда можно моник и на бегущую строку было бы заменить. Но вот не только же для чтения построчного текста он используется. Площадь (пиксельная и дюймовая) одновременно отображаемой инфы тоже важна.
                              Ответить
                              • > на бегущую строку
                                Нет смысла, т.к. спец. упражнения расширяют область внимательного зрения не только по оси X, но и по оси Y и мозг воспринимает уже не одно слово, а несколько строк одновременно. Там уже была статейка про быстрочтение, в которой в одном маленьком окошке быстро меняли слова. Вроде, получается быстро, но от такого мерцания лично у меня чуть слюна из пасти не пошла. Нет, так просто нельзя, текст должен быть статичным.
                                Ответить
                                • > Нет, так просто нельзя, текст должен быть статичным.
                                  Вот и я об этом. Поэтому смешивать 4K и 3° как-то странно в одном умозаключении.
                                  Осталось понять, будет ли профит от увеличения плотности, (практически) без увеличения дюймажа.
                                  Ответить
            • ([&buf](int n, int val){*((char*)&buf[n]) = val;})(14, 0x30);

              Вот так лучше будет. Можно копипастить почти целиком, только циферки в конце править на нужные.
              Ответить
              • ([&buf](int n, int val, auto t){*((decltype(t))&buf[n]) = val;})(14, 0x30, (char*)0);

                P.S. Проверяя на ideone, понял, что код-то действительно говно, ведь buf не может быть void*. Поэтому так ещё лучше:
                ([&buf](int n, int val, auto t){*((decltype(t))&((decltype(t))buf)[n]) = val;})(14, 0x30, (char*)0);
                Ответить
            • *[&](int n){return ((char*)&buf[n]);}(14) = []{return 0x30;}(); // fixed
              Ответить
        • > Си же.
          >> которого раз в пару лет заставляют переписывать его поделки на С++
          Ответить
          • Заставляют на плюсах, но получается чисто си.
            Ответить

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