2012-01-31 46 views
3

對於作業,我正在編寫一個程序,處理很多time_t對象。我想過檢查它們是否溢出,但是後來發現如果溢出了,我們都會遇到麻煩。自紀元> LONG_MAX以來的秒數會發生什麼?

有沒有這方面的計劃?自世紀以來的時間超過存儲將會發生什麼?

+1

我懷疑還有任何主流的CRT實現還沒有使time_t成爲64位類型。 – 2012-01-31 05:27:15

+0

http://en.wikipedia.org/wiki/Year_2038_problem – 2012-01-31 05:29:55

+0

@Hans:錯了。在我所知的所有現有32位機器上,'time_t'是32位('long'),特別是Linux/glibc。無論如何,我認爲預計到2038年所有的32位機器都會退役是很現實的...... – 2012-01-31 05:38:35

回答

9

LONG_MAX在64位機器上是2^63 - 1。試試這個:去http://google.com並輸入2^63 seconds in years。看看答案並決定你是否真的需要擔心它。

+0

喜歡喜歡。是的,這是關於大數字的有趣的事情。我甚至認爲,「哦,也許它只是一個如此之大的數字,我們不必擔心它......沒有2^63秒可能不是那麼多年。」我對這個答案很滿意。 – Ziggy 2012-01-31 05:42:19

+1

我喜歡關於這個問題的維基百科文章。使用帶符號的64位值將在12月4日星期日15:30:08引入一個新的換行日期292,277,026,596。至少對我來說不會有問題。 – 2012-01-31 07:53:23

+1

有點讓我傷心,認爲我可能不會在近3000億年後看到這種情況發生。太麻煩了。 – Brenden 2012-11-06 04:56:46