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

    +135

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    #include <stdio.h>
    #include <stdlib.h>
     
    int main()
    {
       static int val = 1;
       while(val /* vanish */ --> 0)
       {
          (++ /* do black magic ! */  val) /* very black magic !!! */ ++;
          (val == 2 ? printf("WTF ??!") : val =- 1);
       }
     
       if(val<-15)
               return ((1<0?/* magic */100500:500?233?33?321?2223?0:0:0:0:0:0));
     
       return ((!!val==!!false)?val ==- 100500?5:1:main());
    }

    Из разряда синтаксиса языка

    Запостил: ForEveR, 17 Августа 2010

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

    • Конечно, bool нету в Си, но сам код сишный за исключением bool
      Ответить
      • #define BOOL LONG
        #define TRUE 1
        #define FALSE 0

        где-то в недрах Win32 API такое было. ну а тут C++ из-за bool
        Ответить
    • !!false добило...
      Ответить
    • хуета, имхо, ещё не хватает volatile и другой подобной дряни
      Ответить
    • аффтар выучил циклы, декременты/инкременты, тернарный оператор и решил этим кого-то удивить?
      Ответить
      • Отнюдь. Аффтар решил выложить ебанутый синтаксис С++. Точнее возможности его ебанутого использования.
        Ответить
        • а где здесь с++? =)
          ну ты даже обосрать как следует не сумел.
          взял бы вырвиглазную декларацию темплейта пропустил через обфускатор - наглядней бы получилось
          Ответить
          • С/С++. С++ здесь конечно исключительно в bool, но переписать через cout не составляет проблем.
            Целью не было обосрать. И написано это было естественно чисто для прикола.
            Особенно убивало (while val --> 0). Особенно, если вспомнить пределы.
            Ответить
            • -->

              детский сад
              здесь 2 токена, и читается это однозначно
              Ответить
              • Возможно. Но синтаксис не должен бы такого позволять. Если незнающий встретит это в коде, я не думаю что он очень обрадуется.
                Ответить
                • такого это какого? можно вообще форматирование убрать, весь высер в одну строку записать
                  Ответить
                  • fmap2 f a b = f <$> a <*> b
                    fmap3 f a b c = f <$> a <*> b <*> c
                    fmap4 f a b c d = f <$> a <*> b <*> c <*> d

                    Если незнающий встретит это и повесится, чья вина - языка или неустойчивой психики?
                    Ответить
                    • Языка - в том что позволяет так писать.
                      Неустойчивой психики - в том, что вешатся из-за кода не стоит.

                      Да и вообще, это просто неудовольствие синтаксисом С++. Писать такое в серьезных программах естественно никто не будет.

                      Вот это вообщем-то тоже незнающий может убится об стену.

                      #include <iostream>
                      #include <string>
                      #include <algorithm>
                      int main()
                      {
                      std::string s="Hello, world!";
                      std::for_each(s.begin(), s.end(), [](char f){std::cout<<f;});
                      return 0;
                      }
                      Ответить
                      • приведи пример "правильного" синтаксиса

                        (и не забывай, что синтакс-задротство до добра не доводит)
                        Ответить
                        • Для примера данного в этом коде нету нормального кода. Потому как код высосан из пальца, следовательно незачем для него придумывать нормальный эквивалент.
                          Ответить
                          • нет уж, деточка
                            обсирая, предлагай
                            (или признай, что синтаксис не существенен)
                            Ответить
                            • Мне в сотый раз сказать что я не обсираю? оО
                              Нормальный - запрещать такое использование.
                              А нормальный по этому "примеру". Без рекурсии, без триграфа, без while(val-- >0) и т.п. Тоже абсолютно бессмысленный код. Если всем так не нравится и это не ГК, то почему плюсуют?)

                              #include <stdio.h>
                              #include <stdlib.h>

                              int main()
                              {
                              int val = 1;
                              while(val>0)
                              {
                              val--;
                              }
                              return 0;
                              }
                              Ответить
                              • >Без рекурсии
                                в принципе дальше можно не читать

                                >без триграфа
                                нашел, что вспомнить O_o
                                где ты его в существующих проектах разглядел?

                                >while(val-- >0)
                                замени на for(;val;val--) так тебе легче?
                                Ответить
                                • Ну как бы, рекурсия вызывается ровным счетом до тех пор пока val не будет меньше -15... Триграф работает в этом проекте. В существующих его возможно нет.
                                  Ответить
                                  • >триграф работает в этом проекте. В существующих его возможно нет.

                                    твои некромантские проблемы
                                    Ответить
                                  • А где вы рекурсию нашли?
                                    Обычный цикл же.
                                    Ответить
                                    • Смотрим на проект выше. Думаем, что выходит в return в конце функции.
                                      Ответить
                                      • >Смотрим на проект выше.
                                        Нихрена не увидел. Не туда смотрю?
                                        Ответить
                                  • А почему вы тернарный оператор триграфом называете?
                                    В Си триграфы начинаются с двух знаков вопроса, для тех, у кого на клавиатуре кнопок не хватает, бо поедены думом!:??) (Это смайлик, если чо)
                                    Ответить
                                    • )) Да, настоящая причина тоже довольно дебильна.
                                      Хочу на иврите писать!!11
                                      Ответить
                                    • printf("WTF ??!") - триграф. Конкретно "??!".
                                      Ответить
                                      • printf("/* комментарий*/") - комментарий ? :)
                                        Ответить
                                        • Таки пустая строка. Хотя - ошибка компиляции) ; нету.
                                          Хорошо. Конкретно вот это - ??! - триграф.
                                          Ответить
                                    • в "WTF ??!" вполне себе триграф
                                      гэцэцэ негодуэ
                                      Ответить
                            • А вот даже интересно... Это вы тоже считаете нормальным синтаксисом и что можно так позволять делать?

                              int a[4]={1,2,3,4};
                              int i=0;
                              i[a];
                              Ответить
                              • Ты СОВЕРШЕННО не понимаешь в чём суть байтоебства =)

                                предложи свой вариант нициализации
                                Ответить
                                • Я знаю, что это один и тот же код с точки зрения машинного кода. Но с точки зрения ЯЗЫКА это нормально?
                                  Инициализации чего? оО Массива?

                                  int a[4]={1,2,3,4};
                                  int i=0;
                                  a[i];
                                  как бэ так и делают все нормальные люди
                                  Ответить
                                  • в те древние времена жизненно важно было выдрочить простой и надежный компилятор.
                                    который, между прочим, до сих пор выглядит вполне себе ничего, не то что алгольные высеры Вирта.
                                    Ответить
                                    • Ааааа!!!11
                                      xXx_totalwar защищает С++.
                                      В лесу волк сдох.
                                      Ответить
                                  • раз уж ты себя таким знатоком языков считаешь, может пора свой начать пилить.

                                    а то рекурсия не нужна, аппликативные функторы не нравятся - по-твоему я должен пидорасить тонны бойлерплейта и великов ради каких-то там нубов? да вменяемый чел просто ткнет ебалом в мануал, неасилил - твои проблемы.
                                    Ответить
                                    • Эм. Я называл рекурсию ненужной? Я сказал, что она не нужна в данном коде. Я не считаю себя знатоком языков. Даже С/С++ не считаю себя знатоком далеко. Учусь. Все учились, не так ли? В процессе обучения вырабатываются какие-то вопросы, проблемы, непонимание. Лямбда функции мне нравятся, но я имел ввиду, что это бредовая реализация Hello, world! Только и всего...
                                      Ответить
                                      • >я имел ввиду, что это бредовая реализация Hello, world! Только и всего...

                                        но при этом приперся сюда и насрал
                                        Ответить
                                        • Это был всего-лишь ответ на твое сообщение. А именно:

                                          fmap2 f a b = f <$> a <*> b
                                          fmap3 f a b c = f <$> a <*> b <*> c
                                          fmap4 f a b c d = f <$> a <*> b <*> c <*> d


                                          Если незнающий встретит это и повесится, чья вина - языка или неустойчивой психики?
                                          Ответить
                                          • Кому не нравится пусть пишет на другом -- их полно.
                                            Ответить
                                          • но язык все же стоит реализовать - это хотя бы дурь вышибает.
                                            прочти драконью книгу
                                            Ответить
                      • Незнающий не должен лезть в стл в принципе. Пусть сначала массивчик с указателями порасширяет для новых элементов, и посжимает для красоты, завернет это в класс и пользуется -- ахуенный контейнер. Хотя я думаю к тому моменту он уже будет знать, что --> это два разных операнда.
                        Ответить
                • Питон.
                  warAndPeace = [
                  ["1","sffg","dfgsdfg","dsfgdsfg","edfghf" ,"Wretyertu",esfgdxvfGB","sgdefgse43ertd gfhbfc","dsfghdrghd],
                  ["3456789", "sdfhgdrfyhjd", "sdgfhdfhdhrfe", "drstghjdvb", "waesrtsr","awesrgsdf","dsffgh","erytety erdgfdf"]
                  ["sdfdfcdgh","werrtyrt","ertyrgjjh" "ytryghrtghrfghrt","retyhrghrtyetgfr "],
                  ["efghrfghrt","rtyhuty645rytur5ytu","rtyu tryuryutryh"]
                  ]
                  Найди-ка парочку. Синтаксис позволяет. А потом умножь на 100500. Нравится? Да, бейсик круче, там всем всё понятно. Если не хочешь смотреть на --> не пиши так. Это не может вызывать вопросов, потому что конструкции --> как и 8===> нет. Если человек настолько незнающий то он не поймет и a == b. "Че за труба?"
                  Ответить
                  • Давай, я даже подскажу случайность -- там кавычки забыл в конце первой строки, этого язык не позволяет))
                    Ответить
        • Так не используй его ебануто.
          Ответить
    • #define normalniy_sintaksis 0&
      int ne_pizdi = 0;
      
      normalniy_sintaksis!!11 - ne_pizdi;
      Ответить
    • чесно говоря, думал что все ебанутое начальство, которое разрешает (или заставляет) долбоебов писать на том, на чем они писать никогда не научатся, выпилил кризис... не угадал...
      кто пустил манков писать код на С++? есть же бейсик, ПоХаПе, Луа, питон (если бить по рукам во время)...

      я конечно понимаю грамотные наезды на С++ от грамотных людей, но такой тупой наезд требует такого тупого комента...
      Ответить
      • пушкофф не мог не отписаться в треде про с++ =)

        >есть же бейсик, ПоХаПе, Луа, питон...
        C#, Java, Flex, 1С, Delphi и сотни других на которых будут заставлять писать и, как следствие, будет пополняться свежим кодом калом ГК.
        Ответить
        • ну наезд действительно тупой... даже полный имбицил или Джорж Буш до такого бы не догадались. мне даже страшно представить сколько баллов IQ кандидат набрал в тесте для военкомата, там наверное впервые сработало правило, что настолько тупых не берут...

          > C#, Java,
          ну это уже посерьезней, и уверен что в их синтаксисе тоже хватит приколов...
          по моему в СРешетка для лямбд используется оператор =>...

          к стати, где кандидат нашел православный синтаксис без недостатков и непонятностей?
          Ответить
          • > для лямбд
            да какие там лямбды без типовыводилки? пародия.

            >к стати, где кандидат нашел православный синтаксис без недостатков и непонятностей?
            ассемблер
            Ответить
            • > ассемблер
              ну это проходит...

              хорошо что сообщения нельзя удалять, через пару лет глянет каким ебланом был в "молодости"...
              Ответить
          • IQ в тесте для военкомата???!!!11
            Ответить
        • тоталвар не мог не отписаться в треде, где идёт срач :)
          Ответить
    • Ух. Нафлудили хорошо. Видимо тут собрались те, кто всегда были про программисты. Прям с рождения судя по постам Пушкоффа etc. Я не наезжал на язык. Я не обсирал язык. Но конечно на сайте ГК всегда все лучше знают, что имел ввиду автор) Что ж. Ну через пару лет посмотрю каким ебланом был в молодости. Спасибо за тонну флуда.
      Ответить
      • Разговор с про программистами здесь что-то не получается. Сразу начинают засирать, флудить, троллить. А зачем? Если такие опытные и знающие могли бы поделиться знаниями, написать хотя бы что-то конкретное, не переходить на личности, разговаривать нормально. Так нет же. Один срач и тонна флуда. Грустно.
        Ответить
        • Тебе нормально объясняют, что непонятно?
          Ответить
        • а какими знаниями поделиться, судя по твоему коду? чем тут поможешь? отправить в магазин за литературой да и не по языкам программирования, а по методам алгоритмизации, где только псевдокод, теория графов, стратегические игры, теория множеств, динамическое программирование, рекурсия, метод рекурсивного спуска и тому подобные сложные вещи, а на чём ты будешь их реализовывать не имеет значения, абсолютно никакого. Если ты понял как это всё делается, то уж "оформить" на языке каком-то достаточно будет даже самых базовых знаний, имхо
          Ответить
        • Объясняю.
          Ты говоришь "надо ограничивать", что "не знающих" людей, по твоему мнению, этот код может ввести в заблуждение -- тебе говорят, что тебе надо поджать булочки и контролировать себя самому, и что не знающему человеку, вопреки твоему мнению (это про переход на личности) следует не писать/читать код, а читать книжку, где в самом начале объясняют существующие типы конструкций, и где такого код не приведено. Мы не были с рождения программистами, но прежде, чем писать код и разбираться в чужом, лично я прочитал, что такое +, -, инкремент и декремент, и, насколько я могу вспомнить свой путь, я никогда бы не подумал, что --> имеет значение. Такие конструкции, как while (a-->0) можно прочитать на человеческом языке, притом последовательно, что придает краткость и понятность коду, если не искать глубинный смысл в сочетаниях символов. Нахожу это дико логичным. Притом, любой человек, тем более "не знающий", должен понимать, что годы развития языка и силы >9000 людей, создававших его и писавших стандарты, полюбому значат больше в плане развития языка больше, чем все его 10-50 лет жизни, и уж точно они делали это не просто так. Следи за собой сам -- расставляй скобки в тернарных операторах, ставь пробелы. Есть стандарты, где тебе скажут, что пробелы вокруг операторов нужны. Сколько я видел не "коленочных" продуктов, код довольно разборчив. Также есть автоформаттеры.
          Высказываясь, помни, что для 1-99% выслушавших твоя мысль может быть полностью ебанутой. Если считаешь себя идеальным -- "пиздуй назад на лавочку, сиди и щелкай семечки"(с).
          Ответить
          • Спасибо. Действительно нехорошо получилось с этим кодом и обсуждением синтаксиса. Видимо вчера мне было очень плохо. Извиняюсь перед всеми.
            Ответить
            • ну раз ты все понял, и чтоб окончательно тебя добить возможностями синтаксиса С++ почитай это
              http://www.xs4all.nl/~weegen/eelis/analogliterals.xhtml
              Ответить
        • уточни, кто такие «про программисты», exactly?
          при добавлении к прилагательным и существительным образует существительные со значением начальной стадии появления или неполноты признака ◆ прозелень, проседь, проблеск, прожелть
          amirite?
          Ответить
          • А еще романское: пропутинский, проправительственный. Типа, апологет.
            В данном случае, думаю, имеется в виду программисты-про(фи).
            Ответить
    • Сишный синтаксис, конечно, говно, но данный наезд - КГ/АМ.
      Ответить

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