Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么选择GetLocalTime(&;sys);表现出奇怪的结果?_C++_Winapi_Time - Fatal编程技术网

C++ 为什么选择GetLocalTime(&;sys);表现出奇怪的结果?

C++ 为什么选择GetLocalTime(&;sys);表现出奇怪的结果?,c++,winapi,time,C++,Winapi,Time,我想实时获取当地时间。代码和结果如下,显示奇怪 int main() { while (true) { char sentdata[64] = { 0 }; GetLocalTime(&sys); sprintf(sentdata, "A,%02d:%02d:%02d.%03d,B\n", sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds); cout &

我想实时获取当地时间。代码和结果如下,显示奇怪

int main() {
    while (true) {
        char sentdata[64] = { 0 };
        GetLocalTime(&sys);
        sprintf(sentdata, "A,%02d:%02d:%02d.%03d,B\n", sys.wHour, sys.wMinute, sys.wSecond, sys.wMilliseconds);

        cout << sentdata << endl;
    }
    return 0;
}
intmain(){
while(true){
char sentdata[64]={0};
GetLocalTime(&sys);
sprintf(sentdata,“A,%02d:%02d:%02d.%03d,B\n”,sys.wHour,sys.wMinute,sys.wssecond,sys.wmillseconds);

cout您的代码以纳秒为单位运行,而输出以毫秒为单位。

您的代码以纳秒为单位运行,而输出以毫秒为单位。

这是Windows系统上的一种典型计时行为,即使使用高分辨率时钟:时间只会以大约16毫秒的跳跃方式增加


有关Windows上的精确计时,请参见

这是Windows系统上的一种典型计时行为,即使使用高分辨率时钟:时间仅以约16毫秒的跳跃方式增加


有关Windows上的精确计时,请参见

时钟更新与时钟滴答声中断同步。默认情况下,时钟滴答声中断每秒触发64次。1000/64=15.625,正如您所看到的。它可能会出错,timeBeginPeriod()@HansPassant谢谢你的评论。但我在另一台电脑上尝试了相同的代码,我可以得到我更新过的图片的每毫秒,而不是16毫秒的一次更新,为什么?我已经告诉过你了。在多任务操作系统上,期待看到每一毫秒的流逝基本上是一个白日梦。尽管从技术上讲,你可以将其锁定为确保没有其他进程可以启动,并且麻烦制造者驱动程序被禁用,这样你的线程就不会被抢占。从技术上讲。@HansPassant,但你可以看到我上传的pic2,我只是在另一台电脑上使用相同的代码,我可以每毫秒看到一次。启动Chrome是让另一个程序调用timeBeginPeriod(1)的一个非常好的方法对于您来说。时钟更新与时钟滴答声中断同步。默认情况下,时钟滴答声中断每秒触发64次。1000/64=15.625,正如您所看到的。它可能会出错,timeBeginPeriod()@HansPassant谢谢你的评论。但我在另一台电脑上尝试了相同的代码,我可以得到我更新过的图片的每毫秒,而不是16毫秒的一次更新,为什么?我已经告诉过你了。在多任务操作系统上,期待看到每一毫秒的流逝基本上是一个白日梦。尽管从技术上讲,你可以将其锁定为确保没有其他进程可以启动,并且麻烦制造者驱动程序被禁用,这样你的线程就不会被抢占。从技术上讲。@HansPassant,但你可以看到我上传的pic2,我只是在另一台电脑上使用相同的代码,我可以每毫秒看到一次。启动Chrome是让另一个程序调用timeBeginPeriod(1)的一个非常好的方法谢谢你。谢谢你的评论,但我在另一台电脑上尝试了相同的代码,它可以每毫秒显示一次。为什么?我有更新图片,你可以在另一台电脑上看到结果。谢谢你的评论,但我在另一台电脑上尝试了相同的代码,它可以每毫秒显示一次。为什么?我有更新图片,你可以在另一台电脑上看到结果。