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

    +81

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int i=0;
            for (;i<5;
                 printf("%d",i);
                 i++;
                 );

    Запостил: ZevsVU, 17 Июля 2012

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

    • не многовато ли точек с запятой в for'е?
      p.s. и где тут C++?
      Ответить
    • Ох уж эти каникулы...
      Ответить
    • новое слово в форматировании: козырек
      Ответить
    • Не компилица же.
      Ответить
      • Пользуясь телепатическим модулем, преобразуем этот код так:
        int i=0;
                for (;i<5;
                     printf("%d",i))
                     i++;
        Ответить
        • А с пустым телом всё же решимо?
          for (int i = 0; i < 5; printf("%d\n", i++))
              ;
          Тут будет неустановленное поведение, или всё нормально?
          Ответить
          • не вижу UB
            в принципе, printf сам возвращает int, так что
            for (int i = 0; i < 5 && printf("%d\n", i); ++i)
                ;
            тоже вполне рабочее идиотское решение
            Ответить
            • Даже если бы он возвращал void, можно было бы написать что-то в духе i<5 && (test(...), 1). Вот только допустим ли void в таких ситуациях по стандарту?
              Ответить
              • в стандарт лень лезть
                http://ideone.com/sEk4R
                Ответить
                • Макрософто студия пошлет.
                  Ответить
                  • точно?
                    Ответить
                    • заинтриговал
                      запустил вышеуказанный пример дома на v10.0 sp1
                      1>Build succeeded.
                      1>
                      1>Time Elapsed 00:00:00.67
                      Ответить
                  • Которая?
                    Ответить
                    • 6.0, может и более поздние
                      Ответить
                      • Что?!
                        Кто сказал про шестую студию?!
                        Ты опять сказал "шестая студия"?
                        Ты пытаешься дразнить меня, да?
                        Давай, ещё раз скажи "студия 6.0".
                        Скажи это.
                        http://1.bp.blogspot.com/-siX0TLiJ6QE/T2-ceITi6_I/AAAAAAAAA7o/qRNRWxCyuzc/s1600/pulp_fiction_jackson_travolta.jpg
                        Ответить
                        • >Ты пытаешься дразнить меня, да?
                          Ты кто такой?
                          Ответить
                • Вот кстати заглянул в стандарт с++98 - в разделе про оператор ',' не написано, должен ли он поддерживать void слева...
                  Ответить
                  • А что , воид особенный штоле?
                    Ответить
                  • >не написано, должен ли он поддерживать void слева...
                    UB, который не записали в стандарт? Как-же так?
                    Ответить
                • Это так и определено в стандарте, что
                  a<<b<<c сначала считает a и b и c, а потом a<<b<<c , а не сначала a и b, потом a<<b, потом c, потом a<<b<<c?
                  Ответить
                  • думаю, в стандарте никак не определен порядок вычисления аргументов << - думаю, там implementation defined
                    а компиляторы, традиционно, слева направо аргументы готовят, когда порядок не важен
                    Ответить
                    • Если бы аргументы готовились слева направо (т.е. второй вариант из того, что я сказал), то вывод был бы другой.
                      Ответить
              • По-моему, тут любой тип допустим, т.к. тип задается последним операндом оператора "запятая".
                Ответить
            • Признайтесь, вы юзнули [code=cpp] для подсветки for и int, ибо хайлайт.джыэс кэннот инту Цэ из коробки.
              Так что, где здесь C++, @defecate-plusplus?
              Ответить

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