2015-07-04 100 views
1

由于某些原因,difftime只返回整数。我的代码非常简单。为什么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月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)(微秒分辨率,不太现代,严格不赞成,但在'clock_gettime()'没有的Mac OS X上可用)。曾经有 ['ftime()'](http://pubs.opengroup.org/onlinepubs/009695399/functions/ftime.html)(毫秒分辨率,古代,不推荐) - 这是从POSIX 2001年(2004年)手册。 –

回答

3

功能time()返回最近的秒数和difftime()只是返回那些差异。基本上任何整数减一整数都是整数(但它是以double的形式返回的)。

顺便说一句,对于更精确的计时器:

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

[时间](http://www.cplusplus.com/reference/ctime/time/) 和 [clock](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'参数的指针,并且如果指针不为null,它将把它返回的值写入指向的变量中。原始代码是完全正确的。你的修改也是可以的。 (个人而言,我很少使用'time(&var)',而几乎总是使用'time(0)'或'time(NULL)'代替)。但是你对解释为什么'difftime()'的输出始终是一个整数值没有做任何事情。 –

相关问题