Por que o Unix armazena os timestamps em um inteiro assinado?

21

Por que um inteiro assinado é usado para representar os timestamps? Existe um começo claramente definido em 1970, que é representado como 0, então por que precisaríamos de números antes disso? Os timestamps negativos são usados em qualquer lugar?

    
por Bakudan 25.11.2011 / 21:06

2 respostas

32

Versões anteriores de C não tinham inteiros sem sinal. (Alguns programadores usavam ponteiros quando precisavam de aritmética não assinada.) Não sei o que veio primeiro, a função time() ou tipos não assinados, mas suspeito que a representação tenha sido estabelecida antes que tipos não assinados estivessem disponíveis universalmente. E 2038 estava longe o suficiente no futuro que provavelmente não valeria a pena se preocupar. Eu duvido que muitas pessoas pensem que o Unix ainda existirá até então.

Outra vantagem de um time_t assinado é que estendê-lo para 64 bits (o que já está acontecendo em alguns sistemas) permite representar tempos centenas de bilhões de anos no futuro sem perder a capacidade de representar tempos anteriores a 1970. (Isso Por que eu me oponho a mudar para um unsigned de 32 bits time_t ; nós temos tempo suficiente para fazer a transição para 64 bits.)

    
por 25.11.2011 / 21:47
12

É oferecer suporte a carimbos de data e hora antes de 1º de janeiro de 1970.

    
por 25.11.2011 / 21:35

Tags