Я выполняю упражнения из Advanced Programming in 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));