C++对时间的操作_第1页
C++对时间的操作_第2页
C++对时间的操作_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+/C 的时间操作不管是开发游戏还是制作软件,都需要知道当前的真实时间,才能进一步求出虚拟时间。有时为了调试程序也需要知道程序的运行时间。为了能了解当前的“时间”C+和C中就有一些很特殊的函数,可帮我们解决这些问殊的函数,可帮我们解决这些问1.time 函数time函数是C语言中的函数,:+也通用。该函数的原型是time_t time(time_t * timer), 其中time_t其实就是一种长整型变量(也就是等价于long int),本人习惯用这个存储时间来 和int区分。time函数的功能为获取当前的系统时间,返回的结果是一个time_t类型,其值表示从 CUT(Coordinate

2、d Universal Time)时间1970年1月1日00:00:00到当前时刻的秒数。由于 其可返回实际的时间而非程序运行的时间,所以可以用该函数来做很多事情。注意:只有time(NULL )或time(0)能返回上述的值,否则将编译错误!*若想得到当前的日期和时间,而不只是想获得系统时间,可调用localtime将time_t所 表示的CUT时间转换为本地时间(我们是+8区,比CUT多8个小时)并转成struct tm类型 (即类似于结构体的变量),亥类型的各数据成员分别表示年月日时分秒。例如语句struct tm *tblock = localtime(&time(NULL);”之后输

3、出tblock就会按“星期月 日时:分:秒年9” 的格式输出。这种方法给小游戏开发者带来了极大的便利。有兴趣者可以尝试一下。例计算玩家的反应速度如果要编一个程序,计算玩家的反应速度(从要求按下到实际按下的秒数),则用time 函数是最好的选择。首先要明确以下问题:1问:如何判断等待的时间?一 :在要求按下时记录time ,按下后再记录一次,再相减。 2问:如何做成一个小程序? :等待一定的时间,然后要求按下,让用户按下。代码1:代码1:#include #include #includewindows.h #includeconio.h main()time_t old,now; int wa

4、it;/timeSleeprandsystem 函数用至H /Sleeprand函数用到/getch读键盘用到 /old为开始时间,now为结束时间 /wait是等待时间printf(在屏幕显示快按任意键! 时,快速按下任意按键); wai t二rand()%3000+2000;/随机赋值等待时间Sleep(wa it);/等待sys tem(cls);/清屏printf(快按任意键! n); old=time(NULL);/将等待结束时间赋值给oldget ch();/等待用户按下按键now= time(NULL);/将按下按键时间赋值给oldprintf(您的反应速度为:%dsn,now-

5、old); return 0;运行大家是否发现一些问题:虽然程序看似很完整,但是第11行等待的时间都差不多实际上,那完全一样!因为C/C+的rand需要一个变化的随机数种子,如果种子不是变化的,则rand返回的值完全相同!那么该怎么生成这个随机数种子呢?这时time函数就要派上一个特殊的用场了生成种子。因为time函数即使只相隔一秒返回值也会不同,同时由 于它又不会返回负数,可以用mod运算来求指定范围的随机数,所以是绝佳的种子生成器!我们可以试着在程序开头加上一句srand(time(NULL),再试试运行。代码2:#include/主要用于输入输出#include/timeSleepran

6、dsystem 函数用至H#include/Sleeprand函数用到#includemain()srand(time(NULL);/getch读键盘用到/用time函数初始化种子time_t old,now;/old为开始时间,now为结束时间int wait;/wait是等待时间printf(在屏幕显示快按任意键! 时,快速按下任意按键);wait 二rand()%3000+2000;/随机赋值等待时间Sleep(wait);/等待system(cls); printf(快按任意键! n);/清屏old=time(NULL);/将等待结束时间赋值给oldget ch();/等待用户按下按键

7、now 二ti me(NULL);/将按下按键时间赋值给oldprintf(您的反应速度为:dsn,now-old);return 0;哈哈,成!这就是我们的time函数!2. clock 函数与强大的 time 函数相比, clock 函数就属于小弟级了,但该函数在程序调试过程中很有用 处! clock 函数的原型是 clock_t clock(void)。其中 clock_t 和 time_t 样,是 long int,即 长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以 CLK_TCK 或者 CLOCKS_PER_SEC。比如,在VC+6.0下,这两个量的值都是1000,这表示硬件滴答1000 下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。具体见第一个例子。注意: 本函数仅能返回ms级的计时精度(事实上能够达到的计时精度大致与操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论