time_t 的大小的问题

hayade 2007-11-16 11:15:12
大家都知道time_t存的是1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数,
time_t是long int类型,在我的机器上用sizeof查看,发现是占4字节,signed型的4字节正数最大为2147483647(21亿);
而现在已经快12亿了,我想请问在2038年之后的某一天会不会出问题?
还有想问一下在UNIX平台下,long型长度是不是跟机器有关,32位机器就是4字节,64位机器就是8字节?
...全文
2189 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stormful 2007-11-19
  • 打赏
  • 举报
回复
嵌入系统的CPU,没有那么快更新的。32位对于嵌入系统来说,真是太奢侈了。
另外一个问题,就是耗能。谁都不想自己的手机或者MP3天天热的跟烤箱一样。

嵌入系统的发行,不像软件发行。一般都对应相对昂贵的硬件。谁知道呐?现在都喜新厌旧,
到时候,统统换掉没未可知。
gamedragon 2007-11-17
  • 打赏
  • 举报
回复
如果要考虑到这方面的问题,一个程序用上百年,就不应该依赖编译器,自己实现这套东西。
yeetoo 2007-11-16
  • 打赏
  • 举报
回复
放心吧, 等咱们死的时候, 40多亿(unsigned long)是用不完的.

数据类型跟操作系统和运行库有关.
stormful 2007-11-16
  • 打赏
  • 举报
回复
在嵌入领域,这个问题很必要。2038年,我快70岁了,但是我写的程序可能还在运行。可怕。
NKLoveRene 2007-11-16
  • 打赏
  • 举报
回复
是啊
忧虑这个没有必要啊
gamedragon 2007-11-16
  • 打赏
  • 举报
回复
相信在2038年,time_t已经是64位的了。

int大小跟编译器有关,在32位CPU上用TC2.0,int还是2字节,int == short int。
long的长度是C规定的,就是4字节,不管在什么编译器上都一样。
runnerterry 2007-11-16
  • 打赏
  • 举报
回复
数据类型好像跟编译器有关系。
int有的是2个字节,有的是4个字节。
到底是跟机器还是跟编译器有关系,不是很清楚。

希望有人能解答,期待中!

23,127

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧