временная метка времени (0) в нескольких местах в программе на C ++ - PullRequest
0 голосов
/ 06 сентября 2018

Почему отметка времени (0) в нескольких местах в программе на C ++ имеет одинаковое значение?

Пример:

int main(){
     cout << time(0) << endl;
     cout << time(0) << endl;
     cout << time(0) << endl;
     cout << time(0) << endl; 
   } 

Все значения выше одинаковы. Это потому, что программа выполняется с такой высокой скоростью, что значения времени в приведенном выше примере одинаковы?

Может ли кто-нибудь мне помочь? Спасибо!

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Функция time(0) возвращает текущее время в секундах.

Код, который вы загрузите, запустит весь код за одну секунду. Поэтому, даже если время выводится, выводится все то же время.

Следующий код предназначен для непрерывного вывода текущего времени в течение 3 секунд. Если вы запустите его, вы увидите много цифр, но если присмотреться, вы увидите, что число меняется три раза.

#include <iostream>
#include <ctime>

int main()
{
    time_t s = std::time(0); // time_t is int64 in windows 10 64bit.
    time_t n;

    do {
        n = std::time(0);
        std::cout << n << " ";
    } while ((s + 3) > n); // repeat until 3 sec passed.

    return 0;
}
0 голосов
/ 06 сентября 2018

Разрешение функции time() недостаточно детализировано, чтобы приводить к различным значениям для получения разных результатов при каждом вызове, т. Е. ЦП работает быстрее.

Вы можете попытаться вставить std::this_thread::sleep_for вызовов, чтобы проверить, какое временное разрешение соответствует вашим потребностям с аппаратным обеспечением и ОС, которые у вас под рукой.

...