タイムスタンプを表すために符号付き整数を使用するのはなぜですか? 1970年にはゼロで表される明確に定義された開始がありますが、その前に数字が必要なのはなぜですか?負のタイムスタンプはどこで使用されますか?
答え1
以前のバージョンのCには符号なし整数はありませんでした。 (一部のプログラマは符号なし算術が必要なときにポインタを使用します。)関数か符号なし型のどちらが最初かはわかりませんが、符号なし型が通常使用可能time()
になる前に表現が確立されたと思います。 2038年はあまりにも遠い未来なので心配する価値がないようです。当時、Unixがまだ存在していると思っている人はあまりいませんでした。
符号付き数字のもう1つの利点time_t
は、これを64ビット(一部のシステムではすでに発生している)に拡張すると、1970年以前の時間を表現する能力を失うことなく、数千億年後の未来を表現できることです。 (これが私が符号付き数字に切り替えることに反対する理由です。)32ビット署名されていない time_t
;64ビットに切り替えるのに十分です。 )
答え2
1970年1月1日より前のタイムスタンプと日付をサポートします。