C++ 柜台不断重复,请提供答案

C++ 柜台不断重复,请提供答案,c++,c,timer,clock,countdown,C++,C,Timer,Clock,Countdown,现在,我正在学习C编程,我在“Codeproject.com”上偶然发现了一个倒计时代码,并决定运行它并分析它来学习。但是,输出倒计时会在移动到下一个数字之前重复每个数字数千次。请告诉我为什么会这样。代码如下所示: #include <stdio.h> #include <time.h> int main() { unsigned int x_hours = 0; unsigned int x_minutes = 0; unsig

现在,我正在学习C编程,我在“Codeproject.com”上偶然发现了一个倒计时代码,并决定运行它并分析它来学习。但是,输出倒计时会在移动到下一个数字之前重复每个数字数千次。请告诉我为什么会这样。代码如下所示:

#include <stdio.h>
#include <time.h>

int main()
{
      unsigned int x_hours = 0;  
      unsigned int x_minutes = 0;
      unsigned int x_seconds = 0;
      unsigned int x_milliseconds = 0;
      unsigned int totaltime = 0, count_down_time_in_secs = 0, time_left=0;

      clock_t x_startTime, x_countTime;
      count_down_time_in_secs = 10; // 1 min is 60

      x_startTime = clock();
      time_left = count_down_time_in_secs-x_seconds;  //update timer

      while (time_left>0)
      {
        x_countTime = clock();
        x_milliseconds = x_countTime-x_startTime;
        x_seconds=(x_milliseconds/(CLOCKS_PER_SEC))-(x_hours*60);
        x_minutes=(x_milliseconds/(CLOCKS_PER_SEC))/60;
        x_hours=x_minutes/60;


        time_left = count_down_time_in_secs-x_seconds; 

        printf("\nyou have %d seconds left", time_left, count_down_time_in_secs);
      }

      printf("\n\n\nTime's out\n\n\n");

    return 0;
}
#包括
#包括
int main()
{
无符号整数x_小时=0;
无符号整数x_分钟=0;
无符号整数x_秒=0;
无符号整数x_毫秒=0;
无符号整数totaltime=0,倒计时时间(单位:秒)为0,时间(左)为0;
时钟开始时间,计数时间;
倒计时时间单位为10;//1分钟等于60
x_startTime=时钟();
time\u left=倒计时\u time\u,单位为秒-x秒;//更新计时器
同时(剩余时间>0)
{
x_countTime=时钟();
x_毫秒=x_countTime-x_startTime;
x_秒=(x_毫秒/(时钟/秒))-(x_小时*60);
x_分钟=(x_毫秒/(时钟/秒))/60;
x_小时=x_分钟/60;
左时间=倒计时时间,单位为秒-x秒;
printf(“\n您还有%d秒”,剩余时间,倒数时间(以秒为单位);
}
printf(“\n\n\n超时\n\n”);
返回0;
}

计算机速度很快,因此循环每秒执行多次。您需要存储以前的时间,将其与当前时间进行比较,并仅在其发生变化时打印


另外,您的
printf()
调用只有一个
%d
占位符,但您正在向它传递两个参数。

只需在循环中添加一行以打印出x_毫秒,事情就会变得很明显。i、 e.每秒执行循环数千次