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

    +133

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    typedef long bool_t;
    #define TRUE 1
    #define FALSE 0
    
    void f() {
            bool_t var;
            for (var = TRUE; var > FALSE; var++) { /* ... */ }
    }

    Запостил: evg_ever, 28 Мая 2014

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

    • с таким же успехом можно и со стандартным буленом наебнуться. Только стандартный цикл будет бесконечный, а этот только до переполнения лонга.
      Ответить
      • Почему бесконечный?
        Ответить
        • true++ это true.
          Ответить
          • Кстати, полистал стандарт крестов, там вообще забавно:
            5.3.2/1: The operand of prefix ++ is modified by adding 1, or set to true if it is bool (this use is deprecated).
            5.3.2/2: The operand of prefix -- is modified by subtracting 1. The operand shall not be of type bool.
            Ответить
            • Только вот надо было смотреть 5.2.6, где про постфиксную форму сказано. По сути там такой же текст, что и в 5.3.2, за исключением ссылки на приложение D. В котором в свою очередь написано:
              The use of an operand of type bool with the ++ operator is deprecated (see 5.3.2 and 5.2.6).
              Круг замкнулся.
              Ответить
              • Т.е. в итоге ++ с булом устарел и не рекомендуется, а -- с булом вообще не работает.

                P.S. Я вот никогда не юзал ++ с булом, поэтому об этом узнал только сегодня... Интересно, а есть тут те, кто юзали?
                Ответить
                • Мне кажется это всё вытекло из сей (микрософтовских), где вместо була был инт. Инкрементишь себе что-нибудь, и получаешь true, если не 0, и false, в противном случае. Потом тип стал самодостаточным и ради совместимости оставили. Интересно в каком стандарте введут запрет на инкремент була, раз уж признали депрекейтед?
                  Ответить
                  • > Инкрементишь себе что-нибудь, и получаешь true, если не 0, и false, в противном случае.
                    А потом у тебя пациенты немножко обгорают ^_^

                    http://ru.wikipedia.org/wiki/Therac-25
                    Ответить
                    • >состояло из 20 тысяч инструкций кода и была разработано одним программистом в течение нескольких лет
                      привет калькулятору дефекейта
                      Ответить
                      • и тебе привет
                        за сегодня написал 2к отлаженного sql-я десятиэтажного, внес замечания в три документа по паре десятков страниц в каждом, создал с десяток таблиц в схеме одного проекта (ну тут частичный копипаст-адаптация схемы из другого проекта), исправил пару багов, раздал задач отделу, заказал барахло для ОКР, написал десяток внешних писем
                        ну т.е. по мнению кое-кого, недельный объем труда, не меньше
                        Ответить
                        • работает за пятерых, ест за десятерых? с плюсов через жабу докатился до эскуэля?
                          Ответить
                          • Некому вручить бразды от базы. Там же архитектура епт.

                            Да и задачи по настройке живой системы без так-все-еще-и-не-написанных панелей бекоффиса собой и приходится закрывать, к сожалению.
                            Ответить
                            • >Некому вручить бразды
                              Прям как Путин
                              Ответить
                              • а если не Путин - то кот?
                                Ответить
                                • боюсь представить скольким оппозиционных программистам пришлось стать фрилансерами под домашним арестом из-за репрессий
                                  Ответить
                          • > работает за пятерых, ест за десятерых
                            Подает пример подчиненным же. Если начальник распиздяй - то и весь отдел распиздяями будут.
                            Ответить
                            • >Подает пример подчиненным же.
                              посещайте говнокодик
                              Ответить
                      • > состояло из 20 тысяч инструкций кода
                        Дык на язык еще посмотри... Оно даже на сишке было бы раз в 10 меньше, да и багов бы таких не словили.
                        Ответить
                    • код для Therac писала точно крестоблядь, пересавщая на асм
                      Ответить
                • Нет, здесь только те, кто брал корень квадратный от указателей.
                  Ответить
                  • Зри в корень (но сначала разыменуй)
                    Ответить
                  • template <typename T> T sqrt(const T *ptr) {
                        return sqrt(*ptr);
                    }
                    fxd
                    Ответить
                    • Так не интересно. Я об адресе. К указателям можно прибавлять и вычитать. Почему бы не умножать их, делить, корень брать :) Птчк упрлс.
                      Ответить
                      • void Exit(int exitcode){
                        	char exit;
                        	* (int*) (size_t) sqrt( (size_t) &exit ) = exitcode;
                        }
                        Ответить
            • Ах вон оно что, перегрузка операторов. как хорошо, что эту срань (я конкретно про бул) в жаву не пустили.
              Ответить
              • > в жаву не пустили
                Да этот true++ он и в крестах deprecated. Да и никому не нужен на практике.
                Ответить
              • > как хорошо
                можно подумать она от этого стала бы большим говном.
                Ответить

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