全国5万人が受講している「サイタ」

C言語プログラミング入門講座・スクール

C言語プログラミング入門講座・スクールを選ぶ

初回60分無料体験OK

まずは60分の体験レッスンからスタート。
無料で実際のレッスンを体感できます。

月々4,900円〜の低料金

先生ひとりじめの個人レッスンを、この価格でご提供。レッスンは全てプライベート形式の60分間です。

通わない月は0円

曜日と時間を選べるので、
無理なくマイペースに通えます。

詳しくはこちら

プログラミングスクール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)

前の記事

次の記事

この記事を書いたコーチ

富士通でソフトウェア開発を担当。楽しいプログラミングの醍醐味、教えます

楽しめるC言語セミナー
源田雄一 (C言語)

品川・戸塚・武蔵中原・溝の口・立川・新横浜・中山・長津田・成瀬・町田・関内・石川町・...

ブログ記事 ページ先頭へ