我创建了一个简单的定时器程序如下。
#include <conio.h>
#include <windows.h>
#include <iostream>
int main()
{
float counter = 0;
float time = 0;
std::cin >> time;
while (true){
system("cls");
std::cout << time - counter;
Sleep(10);
counter+= .01;
if (time - counter < 0) break;
}
}
如您所见,我没有使用 Clock()
,而是使用了 Sleep()
。当我有一个不太精确的计数器 (Sleep(1000); counter += 1;
) 时,与实时的差异不大(如果有的话)。然而,我创建的倒计时越精确,它就越远离实时。
- 为什么会这样?
- 如果您知道是否有解决方法?不过没什么大不了的,因为
Clock()
工作正常。这主要是一个好奇心驱动的问题。
最佳答案
其他事情在循环中发生——这需要时间。 sleep 也至少需要那段时间 - 但可能需要更多时间。
使用 sleep 但使用时钟调整时间以考虑这些因素。
关于c++ - Sleep() 没有给出准确的时间表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418256/