Timestamps
為什麼 Unix 將時間戳儲存在有符號整數中?
為什麼用有符號整數來表示時間戳?1970 年有一個明確定義的開始,表示為 0,那麼為什麼我們需要在那之前的數字呢?是否在任何地方使用負時間戳?
C 的早期版本沒有無符號整數。(一些程序員在需要無符號算術時使用指針。)我不知道
time()
函式或無符號類型哪個先出現,但我懷疑這種表示是在無符號類型普遍可用之前建立的。2038 年已經足夠遠了,可能不值得擔心。我懷疑很多人認為到那時 Unix 仍然存在。有符號的另一個優點
time_t
是,將其擴展到 64 位(這已經在某些系統上發生)可以讓您表示未來數千億年的時間,而不會失去表示 1970 年之前的時間的能力。(這就是為什麼我反對切換到32 位無符號time_t
;我們有足夠的時間轉換到 64 位。)