2015-07-04 2 views
1

По какой-то причине difftime возвращает только целые числа. Мой код довольно прост.Почему разница только с возвращением целых чисел?

#include <time.h> 

int main() 
{ 
    time_t test = time(NULL); 
    while (1) 
    { 
     std::cout << difftime(time(NULL), test) << std::endl; 
    } 
} 

Мой вывод выглядит

0... 
1... 
2... 
3... 

Не difftime должен вернуться двойников?

+0

Я думаю, что она возвращает количество секунд, прошедших с 1 января 1970 года – Sunsetquest

+0

За доли секунды времени на системах POSIX, рассмотрим [ 'clock_gettime()'] (HTTP: // пабах. opengroup.org/onlinepubs/9699919799/functions/clock_gettime.html) (наносекундное разрешение, современное, предпочтительное) или ['gettimeofday()'] (http://pubs.opengroup.org/onlinepubs/9699919799/functions/gettimeofday. html) (микросекундное разрешение, менее современное, строго устарело, но доступно в Mac OS X, где 'clock_gettime()' is not). Раньше было ['ftime()'] (http://pubs.opengroup.org/onlinepubs/009695399/functions/ftime.html) (миллисекундное разрешение, старое, устаревшее) тоже - это из POSIX 2001 (2004)) руководство. –

ответ

3

Функция time() возвращает к ближайшей секунде, а difftime() просто возвращает разницу. Любое целое число минус целое число в целом целое число (но оно возвращается как двойное).

Кстати, для более точного таймера:

time_t test = clock(); 
while (1) 
{ 
    std::cout << float(clock() - test)/CLOCKS_PER_SEC << std::endl; 
} 
+0

[время] (http://www.cplusplus.com/reference/ctime/time/) и [часы] (http://www.cplusplus.com/reference/ctime/clock/) – Rodolfo

-1
int main() 
{ 
    time_t o_test, f_test; 
    time(&o_test); 
    while (1) 
    { 
     time(&f_test); 
     std::cout << difftime(f_test, o_test) << std::endl; 
    } 
} 
+1

У вас есть не объяснили, что вы изменили или почему. Функция 'time()' принимает указатель на аргумент 'time_t' и будет записывать значение, которое оно возвращает в переменной, на которую указывает, если указатель не равен нулю. Исходный код совершенно правильный. Ваша ревизия также в порядке. (Лично я редко использую 'time (& var)' и почти всегда использую 'time (0)' или 'time (NULL)' вместо). Но вы ничего не сделали для объяснения, почему вывод из 'difftime()' всегда является целым значением. –

Смежные вопросы