타임스탬프를 나타내기 위해 부호 있는 정수를 사용하는 이유는 무엇입니까? 1970년은 0으로 표시되는 잘 정의된 시작을 가지고 있는데 그 앞에 숫자가 필요한 이유는 무엇입니까? 음수 타임스탬프는 어디에서나 사용됩니까?
답변1
이전 버전의 C에는 부호 없는 정수가 없었습니다. (일부 프로그래머는 부호 없는 산술이 필요할 때 포인터를 사용합니다.) 함수인지 부호 없는 유형 중 어느 것이 먼저인지는 모르지만 time()
부호 없는 유형이 일반적으로 사용 가능하기 전에 표현이 확립되었다고 생각합니다. 2038년은 너무 먼 미래여서 걱정할 가치가 없을 것 같습니다. 그 당시에는 Unix가 아직 존재했다고 생각하는 사람이 많지 않았을 것입니다.
부호 있는 숫자의 또 다른 장점 time_t
은 이를 64비트(일부 시스템에서는 이미 발생하고 있음)로 확장하면 1970년 이전 시간을 표현하는 능력을 잃지 않고도 수천억 년 후의 미래를 표현할 수 있다는 것입니다. (이것이 내가 부호 있는 숫자로 전환하는 것을 반대하는 이유입니다.) 32비트서명되지 않은 time_t
;64비트로 전환할 시간은 충분합니다. )
답변2
1970년 1월 1일 이전의 타임스탬프와 날짜를 지원합니다.