Max*_*xpm 1 time unsigned signed year2038
我一直在阅读Y2038问题,我明白time_t最终将恢复到最低可表示的负数,因为它会尝试"递增"符号位.
time_t
根据该Wikipedia页面,time_t无法更改为无符号整数,因为它会破坏处理早期日期的程序.(这是有道理的.)
但是,我不明白为什么它首先没有成为无符号整数.为什么不将1970年1月1日存储为零而不是一些荒谬的负数?
Fem*_*ref 5
由于让它开始在签署2,147,483,648相当于让它开始在无符号0.它不会改变值的32位整数可以容纳的范围内 - 一个32位整数可以容纳4,294,967,296不同的状态.问题不是起点,问题是整数可以保持的最大值.缓解问题的唯一方法是升级到64位整数.
另外(正如我刚才意识到的那样):1970年被设定为0,所以我们也可以及时回到过去.(当时回到1901年似乎已经足够了).如果他们没有签名,这个时代将于1901年开始,能够从1970年开始,我们将再次遇到同样的问题.
归档时间:
14 年,10 月 前
查看次数:
406 次
最近记录: