C语言时间函数time_t

#include<stdio.h>#include<time.h>#include<stdlib.h>intmain(){time_tstart,end;inti;sta... #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;
}
为什么输出是0.00???
展开
 我来答
吉祥二进制
高粉答主

2015-12-29 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84581

向TA提问 私信TA
展开全部

1、time_t // 时间类型(time.h 定义) 
struct tm { // 时间结构,time.h 定义如下: 
int tm_sec; 
int tm_min; 
int tm_hour; 
int tm_mday; 
int tm_mon; 
int tm_year; 
int tm_wday; 
int tm_yday; 
int tm_isdst; 

time ( &rawtime ); // 获取时间,以秒计,从1970年1月一日起算,存于rawtime 
localtime ( &rawtime ); //转为当地时间,tm 时间结构 
asctime() // 转为标准ASCII时间格式: 
//就是直接打印tm,tm_year 从1900年计算,所以要加1900,月tm_mon,从0计算,所以要加1

2、time函数使用示例

#include <stdio.h>  
#include <time.h>    
int main()
{  
time_t rawtime;  
struct tm * timeinfo;  
time ( &rawtime );  
timeinfo = localtime ( &rawtime );  
printf ( "The current date/time is: %s", asctime (timeinfo) );  
    
return 0;
}

百度网友6fe74e2
2013-12-16 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:269万
展开全部
电脑cpu的主频太高,一百万次空循环的执行时间太短,所以,difftime(返回时间差)的返回值非常非常小,比如他返回的是0.0002的话,实际上不是0,但是因你输出时,只保留两位小数,后面的不是0的值也没输出,所以你保留两位小数输出的话,肯定是0.00
另外,difftime的返回值是64位整数,太小的话,肯定也是零,说到底还是因为时间差太小的造成的

循环次数加大一些,现在cpu主频都是1-2g的,你设1亿次或者10亿应该才能看到差距
for (i = 100000000; i > 0; --i);
改成1亿次。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackwind1987
2013-12-16 · TA获得超过2738个赞
知道大有可为答主
回答量:1268
采纳率:50%
帮助的人:492万
展开全部
说到底,time_t是一个整数,单位是秒,你的运算耗时不到一秒,当然输出0了,虽然difftime的返回值是double新类型的,但它的单位也是秒,所以difftime不可能返回有小数的值,也就是说小数部分都是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c281b4c
2013-12-16 · TA获得超过2293个赞
知道大有可为答主
回答量:2382
采纳率:50%
帮助的人:1048万
展开全部
赋值错误。star=clock();end同理,输出要除以1000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海石生风
2013-12-16
知道答主
回答量:4
采纳率:0%
帮助的人:5607
展开全部
for循环的时间不够长,end和start都在同一秒内,你把两值打印出来看就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式