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

    −18

    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
    20. 20
    21. 21
    22. 22
    23. 23
    #include <iostream>
    using namespace std;
    
    #include <chrono>
    
    double curr_time_sec()
    {
        return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()) .count() / 1000.0f;
    }
    
    int main()
    {
       double last_time_sec(curr_time_sec());
       for(int i=0; i<1000; ++i)
       {
          auto time_sec(curr_time_sec());
          cout << "time step " <<   time_sec - last_time_sec  << endl;
          last_time_sec = time_sec;
       }
            
       cout << "\n\n\n\n\n\n\n\n" << endl;
       return 0;
    }

    Просто получи отрицательный delta_time, и наслаждайся зависшим Bullet.
    Исправляется удалением всего одной буквы, догадайся где.

    Запостил: beldiv, 22 Декабря 2016

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

    • переполнение оно такое, да. Вопрос в другом: зачем кастить в мс чтобы потом преобразовывать в с?
      Ответить
      • Просто код получения миллисекунд уже имелся, а идти смотреть как получать секунды напрямую было очень лень. Теперь норм всё - получаю через duration<double>.
        Ответить
        • > как получать секунды напрямую
          time(0)?
          Ответить
          • зачем мне время в целых числах, мне нужна плавающая запятая, и к тому-же кросплатформенно
            Ответить
            • (double)time(0);

              А что в time(0) некроссплатформенного?
              Ответить
            • > плавающая запятая
              Хочешь, чтобы твоя прога работала тысячелетиями (просто с постепенно падающей точностью)?
              Ответить
              • разумеется хочу

                кому нужны секунды, когда речь идет о динозаврах? Как пишут историки: "царь горохос пятый правил примерно в третьем тысячилетии до нашей эры"
                Ответить
              • Напоминаю, что разбор числа с плавающей точкой нужно проводить машиной состояний, а не рагуляркой.
                Ответить
                • Напоминаю, что термин "машина" в зависимости от контекста означает медицинский шприц или самодельный кипятильник из спичек, бритвенных лезвий и провода.
                  Ответить
        • так оно по умолчанию в секундах возвращает.

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

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