As versões anteriores do C não tinham números inteiros não assinados. (Alguns programadores usavam ponteiros quando precisavam de aritmética sem sinal.) Não sei o que veio primeiro, otime()
função ou os tipos não assinados, mas suspeito que a representação foi estabelecida antes que os tipos não assinados estivessem disponíveis universalmente. E 2038 foi longe o suficiente no futuro para que provavelmente não valia a pena se preocupar. Duvido que muitas pessoas pensassem que o Unix ainda existiria até então.
Outra vantagem de um sinal time_t
é que estendê-lo para 64 bits (o que já está acontecendo em alguns sistemas) permite representar vezes centenas de bilhões de anos no futuro, sem perder a capacidade de representar tempos antes de 1970. (É por isso que me oponho a mudar para um Não assinado de 32 bits time_t
; temos tempo suficiente para fazer a transição para 64 bits.)