我创建了一个简单的计时器程序,如下所示。
#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()
工作正常,但不是什么大问题。这主要是一个好奇心驱动的问题。答案 0 :(得分:3)
其他事情发生在循环中 - 这需要时间。睡眠至少需要一段时间 - 但可能需要更多时间。
使用睡眠但使用时钟调整时间以考虑这些因素。
答案 1 :(得分:1)
这是因为你的系统时钟决定了什么时候唤醒你的过程,而这个系统时钟正处于滴答之间。