猿问

C语言时间函数time_t?

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
time_t start, end;
int i;
start = time(NULL);
for (i = 1000000; i > 0; --i);
end = time(NULL);
printf ("%.2f\n", difftime(end, start));

return 0;
}

倚天杖
浏览 729回答 3
3回答

米脂

电脑cpu的主频太高,一百万次空循环的执行时间太短,所以,difftime(返回时间差)的返回值非常非常小,比如他返回的是0.0002的话,实际上不是0,但是因你输出时,只保留两位小数,后面的不是0的值也没输出,所以你保留两位小数输出的话,肯定是0.00另外,difftime的返回值是64位整数,太小的话,肯定也是零,说到底还是因为时间差太小的造成的循环次数加大一些,现在cpu主频都是1-2g的,你设1亿次或者10亿应该才能看到差距for (i = 100000000; i > 0; --i);改成1亿次。

撒科打诨

说到底,time_t是一个整数,单位是秒,你的运算耗时不到一秒,当然输出0了,虽然difftime的返回值是double新类型的,但它的单位也是秒,所以difftime不可能返回有小数的值,也就是说小数部分都是0
随时随地看视频慕课网APP
我要回答