サイタプログラミングスクールC言語プログラミング入門講座神奈川 楽しめるC言語セミナー スクールブログ 整数の範囲の余...

整数の範囲の余談2(未来のお話)

しばらく、更新が滞ってしまいました。すみません。

今回は整数の範囲に関する余談のその2、未来起こりうる話について書きます。

本題に入る前に、かつて「2000年問題」という騒動が起こったのを覚えていますでしょうか?

これは、年に関する処理を誤ることでコンピュータが誤動作する可能性があるとして指摘されたものです。ただ、このときはほとんど問題には発展しませんでした。

しかし、コンピュータが誤動作する可能性は未来にも存在します。それは、「2038年問題」と呼ばれるものです。

この用語は、初めて聞くかたも多いと思います。

ちなみに、問題が発生する時刻まで特定されています。その時刻は「2038年1月19日3時14分7秒(世界標準時。日本時間では12時14分7秒)」です。

さて、何故このような問題が指摘されているのでしょうか。それは、C言語を含む多くのプログラミングにおける「経過時間のデータ型」に理由があります。

ここでは、C言語の場合で説明します。

C言語の時間に関するマクロ定義や関数宣言は、「time.h」と呼ばれるヘッダファイルでおこなわれています。このヘッダファイルでは、経過時間を示す time なる変数が定義されています。経過時間の起点は「1970年1月1日0時0分0秒(世界標準時)」です。

そして、この変数timeのデータの型が問題なのです。

この変数自体は、typedefされたtime_t型で宣言されています。で、多くの処理系ではこのtime_tの定義元がint型となっています。

int型ということになると符号付きになるので、正の整数側の最大値は2,147,483,647になります。これが何を意味するかというと、「1970年1月1日0時から2,147,483,647秒後までしか、経過時間の処理は正常に動作しない」ということです。

そして、その時刻が冒頭の「2038年1月19日3時14分7秒」になるわけです。

現在では、time_t型の定義元が64ビットである処理系も増えてきました。が、すべてがそういうわけではありません。

このような根拠があるので、「2038年問題」に関しては世間に浸透させないければいけないと考えています。


以上、2回にわたって整数の範囲に関する余談をお話しました。

次回は、再びC言語本来の話題で書く予定です。

 

(2014年8月5日(火) 23:59)

前の記事

次の記事

新着記事

レッスンを受講中の皆様へ コーチの源田です。 7/8以降の取り扱いについて、会社と話し合いをした結果以下のように決めました。 (1) 新規体験レッスン これは、さすがに会社在籍中は停止せざるを得ません。したがって、当面受付停止となります。 (2) 継続受講中の生徒...

レッスンを継続受講中の皆様へ コーチの源田です。 今後について、記させていただきます。 ・〜2019/7/7 現状通りのペースでレッスンを実施いたします。 ・2019/7/8〜 この日より、フリーランスから会社勤務に切り替わることになります。 来週中に、継...

コーチの源田です。 予定していた内容と変わる点、ご容赦ください。 皆さんに、重要なお知らせがあります。 このたび一身上の都合により、新規の体験レッスン募集をしばらく停止させていただくこととしました。 再開に関しては、今後の進捗状況により可能と判断した場合に、その時点で再...

コーチの源田です。 今回は、C言語の制御文について記します。 他のプログラミング言語でもそうですが、制御文は前回と前々回の投稿で記したアルゴリズムの基本構造の  ・ 選択構造  ・ 反復構造 をコードで表現するためのものなのです。 ここでC言語の場合における...

コーチの源田です。 フローチャートの部分図紹介。今回は、残りの反復構造になります。 (3) 反復構造 (3-a) 周回数重視 添付画像の1枚目の図が、周回数重視の反復構造の部分図になります。 繰り返したい処理構造の範囲を、上向きと下向きの台形のような図形でくくる感...

レッスン無料相談窓口のご案内

サイタでは、C言語レッスンに関する疑問に
専門カウンセラーがお電話にてご案内しております。
お気軽にご利用ください。

お電話相談窓口はコチラ

ブログ記事 ページ先頭へ