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

    +18.3

    1. 1
    2. 2
    3. 3
    4. 4
    while(0<1)
    {
      ...
    }

    В универе встречал такой вот бесконечный цикл

    Запостил: shurikroger, 12 Августа 2009

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

    • И что здесь такого?
      Ответить
    • Большенство компиляторов хотя бы при минимальной оптимизации всё-равно, наверника, сократят это до
      L1:
          ...
          jmp L1

      Т.е. убирут какие-либо признаки сравнения. Другими словами, я не вижу в этом почти ничего говнокодовского. :)
      Ответить
      • А компилировать вообще без оптимизации - это бредЪ, ибо на современных процессорах работа с регистрами осуществляется где-то в 4 раза быстрее, чем с ОЗУ, а на известных мне языках высокого уровня (в том числе и упомянутый выше C++) нет возможности работать напрямую с регистрами (работа с ними обычно осуществляется через ассемблерные вставки; или через работу с обычными переменными из ОЗУ, но с оптимизацией.. в таком случае компилятор переводит работу с ОЗУ в работу с регистрами).
        Ответить
        • В 4 раза??? Ололо, в сотни, в сотни раз!
          Ответить
          • Ну у каждого процессора по разному, а вот смеётесь Вы зря: ftp://xaionaro.ultanet.org/programming/Assembler/athlon-code-optimization.pdf (к примеру, страница 285). Там именно в 4 раза, насколько я помню, для процессоров Athlon.
            Ответить
      • Поставили минус комментарию, а обоснования так и не дали... Интересно мне послушать, что такого говнистого в этом коде, кроме стилистики.
        Ответить
    • ну я б не стал запихивать выражение, или while(1) или while(true)
      Ответить
    • нормальная практика для цикла, количество итераций которого заранее неизвестна, правда обычно в таком случае используется while(1) или while(true), как уже написал shurikroger выше
      Ответить
    • это чел в универе демонстрировал свои глубокие познания в булевской логике
      Ответить
    • А я предпочитаю for(;;) { ... }
      Ответить

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