关于time.h中的clock(),time()和difftime()的问题?

int fib(int n,int a,int b){ if (n==2){ return a+b; } return fib(n-1,b,a+b); } int main() { time_t begin,end; begin = clock(); fib(10000,0,1); end = clock(); printf("%f",difftime(end,begin)); } int main() { time_t begin,end; time(&begin); fib(10000,0,1); time(&end); printf("%f",(double)(end-begin)/CLOCKS_PER_SEC); } 

1)第一个问题为什么我的第一个主要打印给我打印时间288.000000 ,我假设这是288毫秒,但在文档中它应该在几秒钟内给我结果。顺便说一下,我在Mac上。

2)第二个问题为什么第二个主要问题。 为什么打印输出时间为0.000000 。 我明白time()给了我一个time_t结构,我把它放在beginend time_t结构中然后我发现差异在几秒钟内,似乎不起作用。

是的,我试图在两个不同的时间之间获得差异。

您可以尝试以下方法:

 #include  #include  void timeCheck(int *clock,int *minutes){ int hour ; int minute ; time_t end, start; double diff; size_t seconds; start = (time_t)((clock[0] * 60 + clock[1]) * 60) ; end = (time_t)((minutes[0] * 60 + minutes[1]) * 60) ; if( end < start ){ end += 24 * 60 * 60 ; } diff = difftime(end, start); hour = (int) diff / 3600; minute = (int) diff % 3600 / 60; printf("The difference is %d:%d\n", hour, minute); seconds = (size_t)(hour * 3600) + (size_t)(minute * 60); printf("Seconds = %zu\n",seconds); } int main(void) { int hour[] = {22,20}; int minutes[] = {5,40}; printf("Start time %d:%d\n",hour[0],hour[1]); printf("End time %d:%d\n\n",minutes[0],minutes[1]); timeCheck(hour,minutes); return 0; } 

输出:

 Start time 22:20 End time 5:40 
 The difference is 7:20 Seconds = 26400 

clock()的返回类型是clock_t – 不一定是秒。 Apple:时钟 。 它衡量CPU使用的滴答数( CLOCKS_PER_SEC )。 该值不一定是毫秒或秒。

time()返回自特定时间点(1970年1月1日)以来的整秒数。

因此,快速连续两次调用时间会产生相同的整秒数。

difftime期望time_t (从time()返回类型)作为其参数,并创建一个经过的时间(以秒为单位)。

因此,调用clock_t值是不正确的。