2017-01-30 3 views
2

をオーバーフローする前に、私はUnixの環境での高度なプログラミングのために、例を働いていると、次の質問を頼まれた日数を計算します値がオーバーフローする日数が経過すると、1秒あたり100ティックがカウントされます。は、UNIXのプロセス時間が

void proc_ovf() 
{ 
     int sec = 60; 
     int min = 60; 
     int hour = 24; 
     int tick = 100; 
     int epoch_time = (((INT_MAX/(sec * tick))/min)/hour); 
     struct tm * timeinfo; 
     time_t epoch_time_as_proc_t = epoch_time; 
     timeinfo = localtime(&epoch_time_as_proc_t); 
     printf("3] overflow date of proc: %s", asctime(timeinfo)); 
} 

次の解決策は、オーバーフローする前の何日までの妥当な計算ですか?

(((INT_MAX /(秒*ティック))/分)/時間)

この計算は、248日を得ました。

答えて

3

248日です。

あなたのコードはそうではありません。変数の名前が間違っています。それらは次のようにする必要があります。

int ticks_per_second = 100; 
int seconds_per_minute = 60; 
int minutes_per_hour = 60; 
int hours_per_day = 24; 

int ticks = INT_MAX; 
int seconds = ticks/ticks_per_second; 
int minutes = seconds/seconds_per_minute; 
int hours = minutes/minutes_per_hour; 
int days = hours/hours_per_day; 

printf("overflow after %d days\n", days); 

上記のコードは、測定単位に言及しています。コードの第2部分の各行で測定単位がうまくいかないか分かりますか?

+0

ありがとうございましたありがとうございました...フィードバック – dcrearer

関連する問題