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

    +27

    1. 1
    cout<<!0&&0;

    Что вернет?
    1) 1||0&&0
    2) !0&&0
    3) Приоритет оператора "!" ?
    http://ideone.com/hHdZ1
    http://ideone.com/s8Cj0


    Сории за толстейший троллинг.

    Запостил: LispGovno, 17 Октября 2012

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

    • cout<<(!0&&0);
      Ответить
    • >дата: 48 days 20 hours ago
      >дата: 49 days 3 hours ago
      Баян.
      "Ставьте скобки и будет Вам щастье" - учил молодых падаванов старый лиспер.
      Ответить
      • На самом деле не приятно, что они сделали не ожидаемый приоритет оператора вывода. Понятно, что они просто взяли старый оператор сдвига за основу, но это приводит к соответствующим результатам.
        Ответить
        • << навсегда останется в наших сердцах оператором побитового сдвига, а не крестоблядским сдвигом переменных в поток...
          Ответить
          • Но ведь Тарас был всегда прав насчёт уебищности, неочевидности этих сраных символов в сишке и крестах.

            * - указатель или умножение? а может комментарий?
            & - биторAND или ссылка?
            <> - сдвиги? больше меньше? шаблоны? вывод в поток? А может это часть -> ?
            ~ - поди угадай что это деструктор! Хоть в пасцале слишком длинное и уебищное destructor, но любому умеющему читать понятно назначение.
            Могли бы назвать:
            init{
            }
            uninit{
            }

            Ну и конечно чемпион. ++ - сахарок от которого пошло название языка.
            Ответить
            • Это ещё что...
              Вот есть в крестах std::string. И они сотворили такое крестоблядствонепотребство! Это просто аморально. Как они догадались конкатенацию представить в виде оператора сложения? Этож как нужно с математикой не дружить, чтобы придумать такое?
              Свойства оператора сложения:
              *коммутативностью (переместительный закон): a+b == b+a
              *ассоциативностью (сочетательный закон): (a+b)+c == a+(b+c)
              Взяли бы оператор ++ , как в Хаскеле в качестве оператора конкатенации.
              По той же причине нехватки операторов заюзали побитовый сдвиг в качестве оператора вывода с неправильным приоритетом...
              Ответить
              • > Взяли бы оператор ++
                только вот беда - он унарный
                Ответить
                • Хорошо, оператор конкатенации . (точка) из PHP. Надо признать, как бы это странно не звучало, PHP в данном конкретном случае по продуманности обошел кресты.
                  Ответить
                  • оператор . нельзя перегрузить
                    остаются только % или | или на худой конец &
                    php взял . только лишь затем, чтобы не нагружать этой частой операцией и без того пёстрый листинг из кучи долларов
                    Ответить
                  • >PHP в данном конкретном случае по продуманности обошел кресты.
                    В бейсике помимо "+" который считается некошерным и оставлен для быдла за конкатенацию отвечает &.
                    Ответить
                    • В Аде конкатенацию строк и массивов (вернее, массивов и в частности, строк) делает &
                      Ответить
                      • Даже читается хорошо - "hello" and "world". Плюсую аду.
                        Ответить
                      • А как выглядит побитовое или всех элементов 2х массивов?
                        Ответить
                        • По умолчанию - кажется, никак.
                          Можно перегрузить оператор.
                          Будет a or b
                          Ответить
              • >Этож как нужно с математикой не дружить, чтобы придумать такое?
                Просто это получило широкое распространение и поддержку в массах.

                :: - это сумасшедшее говно без комментариев. надо бы еще ввести ::: для какой-нибудь малополезной херни. что было a-ля __shit__
                ~ - а это оказывается иногда еще и БитНот.
                итд
                Ответить
                • >:: - это сумасшедшее говно
                  Так : уже есть:
                  std:size_t a;

                  http://ideone.com/utAPF
                  Не сильно удивлюсь, если есть и
                  std:::size_t
                  Ответить
                  • >Не сильно удивлюсь, если есть и
                    >std:::size_t
                    Почти http://ideone.com/0fCYS
                    Ответить
                    • навеяло, что-то
                      http://ideone.com/8bT53
                      Ответить
                      • namespace c{ namespace plus {
                        using namespace plus;
                        namespace dont { namespace butt {namespace hurt { namespace me {
                        using namespace c;
                        typedef bool no;
                        }}}}}}}
                        Ответить
                • > :: - это сумасшедшее говно без комментариев
                  А мне почему-то всегда нравился такой синтаксис доступа...
                  Ответить
                  • Что в нем хорошего? В этом есть какая-то тайная логика, очевидность скрытая от остальных?
                    :: - квадрат
                    .: - стрелочка вниз вправо
                    :. - стрелочка вниз влево
                    .:. - стрелочка вверх


                    //раssпаралеливает код
                     ob.do();
                      .:.
                     .....
                    .......
                    Ответить
                    • тетрис.начало
                      Ответить
                    • какая еще стрелочка?
                      :: - скобка
                      :. - открывающая кавычка
                      .: - закрывающая кавычка
                      .:. - хз что, нечто фаллическое
                      Ответить
                      • Я пытаюсь мыслить как упоротый создатель С++.
                        Ответить
                        • какая то нездоровая зацикленность на персоне почтенного норвежца
                          покушайте сёмги или, на худой конец, сельди
                          под водочку то
                          четверг - это маленькая пятница
                          стресс надо снимать, а то ведь так недалеко и до санитаров

                          тьфу блять он датчанин ведь!
                          Ответить
                          • >а то ведь так недалеко и до санитаров
                            Тут Вы правы.
                            Ответить
                      • > .:. - хз что, нечто фаллическое
                        .|. - битор из хаскеля
                        Ответить
                      • У нас так в Макдоналдсе на кружках, на автобусных остановках и в лифтах пишут.
                        Ответить
                    • шрифт Брайля, нужно только матричный принтер подключить и можно приступать к чтению
                      Ответить
              • Или вот очередное крестоблядство неодназначности:
                #include <iostream>
                 
                using namespace std;
                 
                class TClass
                {
                public:
                        TClass()
                        {
                                cout<<"Я не sosnuley"<<endl;
                        }
                        TClass(const TClass&)
                        {
                                cout<<"Я не sosnuley 2"<<endl;
                        }
                };
                 
                int main() {
                        TClass instance(TClass());
                        return 0;
                }

                http://ideone.com/KhVUB
                http://ideone.com/I03xV
                Ответить
                • да, это классическое крестоблядство
                  даже мне не понятно, кому нужна вот такая уебищная forward declaration прямо внутри других функций, вносящая сотни батхёрта в неокрепшие умы
                  Ответить
                • КАК???
                  Ответить
                  • В первом случае не было создания объекта.
                    Во втором - просто сработала необязательная, но соответствующая стандарту оптимизация.
                    Ответить
              • > *коммутативностью (переместительный закон): a+b == b+a
                Верно.

                > *ассоциативностью (сочетательный закон): (a+b)+c == a+(b+c)
                А вот этот закон тут ни к чему, его строки как раз не нарушают.
                Ответить
              • А теперь давай еще посмотрим на "аморальных дебилов", которые умножение матриц назвали умножением, ведь оно тоже не коммутативно.

                По теме: если в вашей голове так глубоко засело, что операция сложения должна обладать коммутативностью, то вам стоит пойти преподавать в школу для 7ого класса арифметику или идти писать статьи про сложение в википедию.
                Ответить
              • Это лишь с точки зрения элементарной алгебры, имею право создать собственную, где + есть унарный оператор. Как по мне + и конкатенация вполне логично.
                Ответить
            • поэтому есть такое понятие, как "контекст"
              Ответить
              • Да. Контекст это очень удобно. Упрощает парсеры и чтение кода.
                Апофеоз контекста - регэксы.
                Ответить
                • Да. Лучше каждой сущности свой символ, назовем его "иероглиф". Упрощает изучение языка.
                  Ответить
                  • Символы усложняют изучение языка. Для этого придумали ключевые слова. Особенно когда эти символы в разных ситуациях ведут себя совершенно по-разному.
                    Почему примитивные типы пишут словами, а не символами?
                    Например:
                    a$ - string
                    a# - float
                    a! - bool
                    a@ - date
                    a% - int
                    Почему так не сделать? И меньше писать, и сразу тип видно.
                    А потому что очень быстро у нас получится пёрл.

                    Посему нужно было оставить только минимальный набор логичных и интуитивно понятных.
                    Ответить
                    • Или бейсик. Там с типами нечто похожее было.
                      Ответить
            • хватит уже элитарную особенность языка выставлять недостатком!

              на деле же - нормальный редактор кода всяко по-разному подсветит тип и имя переменной (снимает все вышеперечисленные неоднозначности), так что проблемы могут быть только с разбором оторванного от контекста куска кода в блокноте
              Ответить
            • >Тарас был всегда прав насчёт уебищности, неочевидности этих сраных символов в сишке и крестах.
              Поэтому крестоблядский компилятор один из самых труднореализуемых компиляторов в мире. Приходится использовать контекстно-зависимую грамматику.
              Типичный крестоблядский пример:
              http://ideone.com/3iHN5
              http://ideone.com/5dSpw
              Ответить
              • >Поэтому крестоблядский компилятор один из самых труднореализуемых компиляторов в мире.

                Трижды плюсую. ++ он один из самых тормозных. По той же причине.
                Ответить
              • Крестоблядская грамматика такая крестоблядская ;)
                http://ideone.com/itTOA
                Ответить
                • Да. Препроцессор - наш друг.
                  А с кастами и кучей скобочек какой-нибудь говнопример можно?
                  Ответить
                  • Я как-то видел код, что try throw catch(TClass1&) catch(const TClass2&) ... использовали для "каста" классов по иерархии и "сброса" const. Но сейчас не найду.
                    Ответить
      • показать все, что скрытоvanished
        Ответить
    • Пример выглядит слегка синтетическим. Никто и не сомневался, что язык самую малость так перегружен атмтой, неоднозначностями и причудливостями.
      Интересно, какой физический смысл у !0? true?
      Ответить
    • Съешь еще этих мягких крестоблядских крестобатхертов:
      cout << 1&&0
      Ответить
      • в любой непонятной ситуации ложись спать ставь скобки
        Ответить
        • Уже давно зарекся писать без скобок. Не я тупану, так коллеги неправильно прочтут.
          Ответить
          • Видимо страусструп мультик про Страну невыученных уроков не видел, книжку не читал, вот и налепил себе в язык "казнить нельзя помиловать" и "полтора крестоблядка землекопа".
            http://ideone.com/ps33b
            Ответить
            • >законы Меткалфа
              Я как человек, помешанный на метапрограммировании прочитал как закон Метакалла
              Ответить
              • Суть:
                Если есть N программистов, то количество пар программистов N(N-1)/2, то есть с ростом числа программистов затраты времени на взаимодействие растут квадратично. Поэтому начиная с какого-то N, рост числа программистов замедляет выполнение проекта.
                Из этого следует закон:
                Если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше

                Ну а согласно Паркинсону: если дедлайн через джва дня, то и один успеет.

                Потому нам достаточно нанять одного крестоблядка.
                Ответить
      • показать все, что скрытоvanished
        Ответить
    • Перегрузка операторов - зло :)

      Выходит что у "<<" (битовый сдвиг) приоритет выше чем у && (логическое И).

      ГК в топике эквивалентен:
      (cout << !0) && 0;

      Все благодарности - к.о.
      Ответить
      • >Перегрузка операторов - зло :)
        Казалось бы как связан приоритет операции и перегрузка операторов?
        Ответить
        • Тот самый битовый сдвиг (перегруженный для std::ostream) воспринимается как самая низкоприоритетная операция, а на самом деле - вот оно что.
          Ответить
      • >Перегрузка операторов - зло :)
        1) Иногда это удобно.
        2) В некоторых языках это очень даже хорошо продумано, безопасно и используется для реализации например стандартной библиотеки.
        Ответить
        • Да, в некоторых языках всё нормально
          http://ideone.com/ekZIQ
          Ответить
          • Как там этого добились? Приоритеты перегруженных операторов можно менять?
            Ответить
            • Приоритет операторов менять нельзя. Переопределение достигается определением магических методов.
              Ответить
    • >Сории за толстейший троллинг.
      Ответить
    • - Не поспоришь, но знаешь, странно это: Даньку я воспитывал так, чтобы он был готов к жизни, мог бороться и побеждать. А Димошу хоть под стеклянный колпак с сигнализацией ставь. Столько извращенцев вокруг, хоть маску на него одевай. Хочется защитить его от всего мира.
      Ответить

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