background image

   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;         /* 

 

时间值 */