Почему для хранения времени ипользуют long int, а не unsigned long int?

Если не ошибаюсь, проблема 2038 года касается только тех программ, в которых для работы с временем использовался 32-битный long int. Но почему не использовали unsigned long int? Ведь при работе с беззнаковым типом это была бы проблема 2106 года.

На Википедии есть соответствующая гифка для знакового типа:

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Aziz Umarov

Если к разрядности нет вопросов, то хранение в знаковом long int нужно поскольку существуют и даты до 1970-01-01 00:00:01 UTC. Которые тоже нужно хранить. А в беззнаковых величинах как представить грубо говоря 1960-01-01 00:00:01 UTC. Просто думаю создателям важнее было отрицательные даты нежели дата после 2038 года.

→ Ссылка
Автор решения: Barmaley

Функция time() была введена в Unix в 70-х годах. В то время был только тип signed long, тип unsigned long был введен в С Керниганом и Ритчи в 1978 г.

→ Ссылка