printf( "%f seconds\n", duration );
system("pause");
}
在笔者的机器上,运行结果如下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为 1 毫秒,那么计时的精度也为 1 毫秒,那么我们可
不可以通过改变 CLOCKS_PER_SEC 的定义,通过把它定义的大一些,从而使计时精度
更高呢?通过尝试,你会发现这样是不行的。在标准 C/C++中,最小的计时单位是一毫秒。
3.与日期和时间相关的数据结构
在标准 C/C++中,我们可通过 tm 结构来获得日期和时间,tm 结构在 time.h 中的定义如下:
#ifndef _TM_DEFINED
struct tm {
int tm_sec; /*
–
秒 取值区间为[0,59] */
int tm_min; /*
分 - 取值区间为[0,59] */
int tm_hour; /*
时 - 取值区间为[0,23] */
int tm_mday; /*
一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0
代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去 1900 */
int tm_wday; /*
–
星期
取值区间为[0,6],其中 0 代表星期天,1 代表星期一,以此
类推 */
int tm_yday; /* 从每年的 1 月 1
–
日开始的天数 取值区间为[0,365],其中 0 代表 1 月
1 日,1 代表 1 月 2
日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst 为正。不实行夏令时的进
候,tm_isdst 为 0;不了解情况时,tm_isdst()为负。*/
};
#define _TM_DEFINED
#endif
ANSI C 标准称使用 tm 结构的这种时间表示为分解时间(broken-down time)。
而日历时间(Calendar Time)是通过 time_t 数据类型来表示的,用 time_t 表示的时间(日
历时间)是从一个时间点(例如: 1970 年 1 月 1 日 0 时 0 分 0 秒)到此时的秒数。在
time.h 中,我们也可以看到 time_t 是一个长整型数:
#ifndef _TIME_T_DEFINED
typedef long time_t; /*
时间值 */