我正在学习 Unix 高级编程中的练习,遇到了以下问题:
如果日历时间存储为带符号的 32 位整数,在哪一年会溢出?
正符号整数 = 2147483647
在以下计算中,我没有考虑闰年:
((((2147483647 / 60sec) /60min)/24)/365) = 68.1yrs
这是一种天真的方法。我怎样才能专业地解决这个问题?
堆栈成员之前提出的以下解决方案对于打印年份非常有帮助。
int epoch_time = INT_MAX;
struct tm * timeinfo;
time_t epoch_time_as_time_t = epoch_time;
timeinfo = localtime(&epoch_time_as_time_t);
printf("2] overflow date: %s", asctime(timeinfo));