一个关于GetTickCount(void)溢出的问题

yuexialinfeng 2006-07-31 11:04:49
DWORD GetTickCount(void)
该函数我想大家都用过,
但有一个问题,它返回的是32位的一个数据,msdn上也说了,当系统运行时间超过49。71天的时候,将重新置0,这里我有一个问题,当在服务器端运行的程序,很有可能超过50天不关,那该怎么解决这个问题呢。我想有没有可以用更高精度的方法,比如用64位。其实我也看了帮助文档了,只是不大明白他的解决方案。
有人可否告诉我该怎么解决这个问题呢?
...全文
662 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2006-08-01
  • 打赏
  • 举报
回复
用GetSystemTime,SystemTimeToFileTime
思危 2006-08-01
  • 打赏
  • 举报
回复
光用 GetTickCount,长时间运行,在大的整数都会溢出。
最好和记录天数的变量结合用, 而GetTickCount 则隔天清零,重新计数。
DrSmart 2006-08-01
  • 打赏
  • 举报
回复
呵呵,自己动手丰衣足食,这种函数自己可以粗略的写一下
JohnKeats 2006-08-01
  • 打赏
  • 举报
回复
用int64可以解决吧.
做两个值,一个记录过去,一个记录当前.正常情况下过去值小于当前值.如果过去值大于当前值,则说明发生溢出.记录下溢出次数.
总数记录在int64中.
ahao 2006-08-01
  • 打赏
  • 举报
回复
是不是HKEY_PERFORMANCE_DATA?
striking 2006-08-01
  • 打赏
  • 举报
回复
什么方法啊.
ahao 2006-08-01
  • 打赏
  • 举报
回复
to 楼主,是什么方法?
yuexialinfeng 2006-08-01
  • 打赏
  • 举报
回复
哎,还是自己在网上查到一个方法了
1基础题_2.由计算机生成简单的四则运算题 1.1 需求分析: 本题主要是要求设计一个可以自动生成四则运算的测试器,并且完全由用户决定出加、减、乘、除哪一种运算题,以及出一位数还是两位数的运算题,同时还要对用户给出的答案的对错进行判断。在程序运行过程中,用户可以选择何时结束程序,并在结束程序时给出一个某种形式的成绩。 ///////////////////////////////////////////// 程序执行的结果://///////////////////////////////////////////////// 1.2 概要设计: 在对题目理解的基础上,并针对几个特别的技术环节,我认为程序可分为三个部分: 1) 程序的欢迎界面,主要通过一些特殊制表符来完成。其中运行,退出程序可以通过一个while循环来判定同时还要考虑用户输入信号量的正误; 2) 出题函数,也是本程序最关键的一个函数,通过使用“rand()%10”或“rand()%100”来获得一个0到9的一位整数随机值或得到0到99的两位整数随机值来为用户出题,并判断用户答案的对错; 3) 评分系统,是在用户选择退出后对用户所答题情况给出的成绩评价。 /////////////////////////////////////////////////// 程序流程图: 1.3 详细设计与编码: 为了使程序更加简洁与工整,且容易修改和阅读,我采用头文件的方式将Exam()函数放在了Exam .h中。Exam()函数主要负责程序的出题和结果的判断,其输入接口为运算符号,位数,即只需向其输入四则运算的一种符号和运算的位数,函数便自动生成题目并自动判断结果的正误,结果以1,0返回。而主程序则是完成了程序的开始、结束,用户成绩的判定。 /////////////////////////////////////////////////// 具体源程序如下: ---------------------------------------------------------------------------------------------------------------------- int Exam(int figure, int sign) {//本函数负责给用户出题 if (figure!=1&&figure!=2&&sign<1&&sign>4) return 0; //判断函数的输入是否符合要求 int a, b; if (figure==1) a=rand()%10; b=rand()%10; if (figure==2) a=rand()%100; b=rand()%100; switch(sign) { case(1): { cout<<" "<>r; if(r!=a+b) { cout<<" "<<"╳ 很遗憾,回答错误! X﹏X "<