0

今、私は 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;
}
4

2 に答える 2

1

コンピュータは高速であるため、ループは 1 秒間に何度も実行されます。前回の時刻を保存し、現在の時刻と比較して、変更された場合にのみ印刷する必要があります。

また、printf()呼び出しには%dプレースホルダーが 1 つしかありませんが、2 つのパラメーターを渡しています。

于 2013-10-06T23:48:10.620 に答える
0

ループ内に x_milliseconds を出力する行を追加するだけで、何が起こっているのかが明らかになります。つまり、ループを 1 秒間に何千回も実行しています。

于 2013-10-06T23:53:34.087 に答える