1.在1.7节中,perror的参数是用ISO C的属性const定义的,而strerror的整形参数没有用此属性定义,为什么?
char *strerror(int errnum);
void perror(const char *msg);
2.若日历存放在带符号的32位整形数中,那么哪一年它将溢出?可用什么方法扩展溢出的浮点数,采用的策略是否与现有的应用相兼容?
UTC起始时间为 T=1970年1月1日 00:00:00,保存在系统的基本数据类time_t中,
带符号的32位所存储的时间t=2^31/(60*60*24*365)=68.0962598年,
所以溢出时间为T+t=1970+68=2038年。其溢出解决办法是将time_t数据类型定义为64位整形。
3.若进程时间存放在带符号的32位整形中,而且每秒100滴答,经过多少天后该数溢出?
day=2^31/(60*60*24*100)=248.551348天。
year=2^31/(60*60*24*365*100)=0.68096年