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

    +1

    1. 1
    x & (x-1);

    Написавший это утверждает, что меняется содержимое памяти, но как происходят эти мистические изменения он объяснить не может.

    Запостил: Ioann_Zid, 01 Мая 2018

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

    • Забыл написать, что х имеет примитивный целочисленный тип.
      Ответить
    • Интересно, какой результат он ожилал?
      Ответить
    • Если он достаточно упорот, и если после объявления х он опрелелил:
      #define x x++
          //или
      #define x x = x
          //или
      #define x x += x
          //ну, или что нить типа того

      то можэт быть...
      Ответить
      • У define надо наоборот писать.
        Ответить
        • Ты что имеешь ввиду?
          Так чтоле:
          x =+ x x enifed#
          ?
          Ответить
          • Нет, у тебя все было верно, я просто не сразу врубился в смысл этой хитрости.
            Ответить
          • Просто такой подход заменит все x на более сложные конструкции даже там, где это не надо. Я и подумал, что что- то тут неправильно: надо наоборот давать сложные названия, чтобы не было ненужных пересечений. Неудачно выразился.
            Ответить
    • Какой памяти? Что значит "меняет"?

      0. Автор запомнил это конструкцию, она изменила его память.
      1. В момент написания кода в текстовом редакторе данная конструкция вписалась в оперативную память, затем долговременную память на жёстком диске.
      2. При компиляции понадобилась память под подгрузку из файла, память под узел в AST, память под скомпилированный вариант.
      3. При исполнении могла потревожиться память в регистрах.
      4. При загрузке на ГК этой строчкой забилась память в маршрутизаторах и прочем сетевом оборудовании, переписалась память в БД.
      5. При просмотре этого кода снова забивается память сетевых устройств, память ПК пользователей и память в их голове.
      Не было бы этой строчки - не менялось бы содержимое памяти.
      Ответить
      • ...В моей памяти проплывают смутные воспоминания, словно из прошлой жизни.

        EBAD_STR_PTR_EXCEPTION

        Я сегодня до зари встану,
        По широкому пройду полю.
        Что-то с памятью моей стало,
        Всё, что было не со мной, помню.
        Ответить
      • И вообще: правильно не "память" а "помять": например: "вася хочет помять сиськи маше"
        Ответить
      • 1. ты забыл еще статическую память: кеш процессора и буфер жесткого диска
        3. при компеляции тоже могла. В принципе, в x86 мало инструкций которые не затрагивают регистр. И уж точно там был хотя бы один call, а значит sp точно был затронут
        Состальным согласен
        Ответить

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