我創建了一個簡單的定時器程序,如下所示。睡眠()沒有給出準確的時間表示
#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()
工作正常。這主要是一個好奇心驅動的問題。
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx – OldProgrammer
使用['timeGetDevCaps']檢查最低分辨率(https:/ /msdn.microsoft.com/en-us/library/windows/desktop/dd757627(v=vs.85).aspx) – NathanOliver
除了計時問題,您正在使用'float'並遞增0.01。這不符合你的想法。 –