为什么 Unix 将时间戳存储在有符号整数中?

为什么 Unix 将时间戳存储在有符号整数中?

为什么使用有符号整数来表示时间戳? 1970 年有一个明确定义的开始,用 0 表示,那么为什么我们需要在此之前的数字呢?负时间戳是否在任何地方使用?

答案1

C 的早期版本没有无符号整数。 (一些程序员在需要无符号算术时使用指针。)我不知道函数time()和无符号类型哪个先出现,但我怀疑表示是在无符号类型普遍可用之前建立的。 2038 年已经是很遥远的未来了,可能不值得担心。我怀疑很多人认为那时 Unix 仍然存在。

有符号数的另一个优点time_t是,将其扩展到 64 位(这在某些系统上已经发生)可以让您表示未来数千亿年的时间,而不会失去表示 1970 年之前时间的能力。(这就是为什么我反对切换到有符号数) 32位未签名 time_t;我们有足够的时间过渡到 64 位。)

答案2

它支持 1970 年 1 月 1 日之前的时间戳和日期。

相关内容