ЙажаСценарий / Говнокод #27513 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
class Point {
  x = 0;
  y = 0;
}

function main() {
  const pt = new Point();
  // Prints 0, 0
  print(`${pt.x}, ${pt.y}`);
}

вот пока вы тут языки чесали - я наваял новую фичу. а кто догадается что особенного в этом классе? в чем фича?

Запостил: ASD_77 ASD_77, (Updated )

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

  • Так это же C++.
    #include <cstdio>
    
    struct Point {
        float x = 0.0f;
        float y = 16.0f;
    };
    
    int main()
    {
        const auto pt = Point();
        std::printf("%f %f\n", pt.x, pt.y);
    }
    Ответить
    • cppinsights ничего не трансформирует, так и оставляет. Только явный static_cast у аргументов printf показывает.
      Ответить
      • Странно. gcc просто передал аргументы printf'у. clang тоже. Может ты оптимизацию забыл?
        Ответить
          • > транс-компилятор

            Ну вот и что ему не жилось как обычному конпелятору из крестов в асм...
            Ответить
            • К слову, исторически первый компилятор языка «C++» — «Cfront» — на выходе давал сишный файл, а не ассемблер и не машкоды.

              Помню, как обломался, когда пытался скомпилировать сам «Cfront» в «DOS» или в «Windows». Компиляция остановилась на файле «aux.c». Вы теперь уже знаете, почему.
              Ответить
              • а чем разница? разници то никакой после прохода оптимизатора.
                Ответить
  • Кстати, а твой компилятор умеет иняциализировать поля с инициализаторами, ня инициализированные в явном конструкторе?
    #include <cstdio>
    
    struct Point {
        constexpr Point() noexcept = default;
        constexpr Point(float x_) noexcept :
            x(x_)
        {}
        
        float x = 0.0f;
        float y = 16.0f;
    };
    
    int main()
    {
        const auto pt1 = Point();
        const auto pt2 = Point(7.0f);
        std::printf("%f %f\n", pt1.x, pt1.y);  // 0.0 16.0
        std::printf("%f %f\n", pt2.x, pt2.y);  // 7.0 16.0
    }
    Ответить
    • А тут так показывает:
      #include <cstdio>
      
      struct Point
      {
        inline constexpr Point() noexcept = default;
        inline constexpr Point(float x_) noexcept
        : x{x_}
        , y{16.0F}
        {
        }
        
        float x;
        float y;
      };
      
      
      
      int main()
      {
        const Point pt1 = Point();
        const Point pt2 = Point(7.0F);
        printf("%f %f\n", static_cast<double>(pt1.x), static_cast<double>(pt1.y));
        printf("%f %f\n", static_cast<double>(pt2.x), static_cast<double>(pt2.y));
      }
      Ответить
  • это чтобы выебнуться код.
    по хорошему надо так:
    function main() { print('0, 0') }
    Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8