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

    +158

    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
    18. 18
    19. 19
    #include <math.h>
    #include <stdio.h>
    double zero = 0, three = 3, four = 4;
    class Complex
         {
            public:
            double &x, &y;
            Complex() : x(zero), y(zero) { }
            Complex( double &z ) : x(y), y(z) { }
            Complex( double &_x, double &_y ) : x(_x), y(_y) { }
         };
         double square( double const &x ) { return x * x; }
         double absValue( Complex &c ) { return sqrt( square(c.x)+square(c.y) ); }
         int main()
         {
             Complex c(four);
             printf( "absolute value is %g\n", absValue( c ) );
             return 0;
         }

    говно отсюда http://www.gimpel.com/html/bugs.htm

    Запостил: xXx_totalwar, 13 Июня 2010

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

    • Невнимательность, куле. А всё из-за кривых имён параметров. Какое такое z и причём тут эта буква? Переменные тоже красивые :)
      Ответить
      • да какая тут невнимательность - это просто пздц: undefined behavior, ссылки головного мозга, глобальные переменные, все говно в одном месте собрал
        Ответить
        • Ну я подумал, что логично было бы написать
          Complex(double &_x) : x(_x), y(_x) { } // <- это не смайлы :)
          Ан нет, автор пытается x послать по неведомому y. Вылетает стабильно.
          Ответить
          • тут логику искать - гиблое дело
            единственное, что спасет отца русской демократии - полный рефакторинг
            Ответить
        • >ссылки головного мозга
          Да нет. Паренёк как раз не умеет ими пользоваться.
          Ответить
    • Абсолютный бред. Просто шизофрения какая-то.
      Complex( double &z ) : x(y), y(z) { }
      - это вообще полный абзац.
      Ответить
      • Несколько зрителей обратили на это внимание. Попытаюсь угадать логику автора. Конструкция
        c(1);c(2);
        должна присваивать значения
        c.x=1; c.y=2
        , но в этом случае подряд два вызова конструктора!
        А в приведённом main значение x не определено, то есть программой можно пользоваться в качестве генератора случайных чисел.
        Ответить
    • отменный ГК!!!
      оно где-то используется??
      Ответить
    • автор, в чём смысл постить сюда искусственные примеры?

      gimpel sofware выпускают тулзу для статического анализа багов в с/с++ коде.
      на http://www.gimpel.com/html/bugs.htm они пишут кривые примеры и обсуждают что не так в примере и какой output выведет их тулза...

      с чего тут ржать-то?

      взято отсюда: http://www.gimpel.com/html/newbugs/bug1416.htm
      Ответить
      • Спасибо за ссылку! Не думал, что кто-то будет сюда копировать примеры из документации по линту...
        Ответить
        • ну ничего страшного не случилось же, и говнокод отличный =)
          Ответить

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