プログラミングで整数を扱う時の注意点

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

プログラミングで整数を扱う場合、気をつけなければならないことがある。それの有名な例として、「整数型は無限ではない」ということである。とはいえ、これは、今日においては多くの場合は意識する必要がないが、非常に大きい数値を扱う場合は問題になることがある。

一般的なプログラミング言語においては、0と1の二進数の組み合わせで数値を扱い、その数値は基本的には8ビットを1バイトとし、1〜8バイトを使って、数値を表現している。例えば、C/C++における整数型には気をつけよでも挙げているが、C言語においては、型に応じて、1/2/4/8バイト分のメモリーを割り当てて、数値を表現している。

したがって、扱える数値の範囲は、メモリーで割り当てられた範囲に限られるため、それを超える場合に、数値が突然マイナスになったり、あるいは意図せぬ結果になったりすることがある(オーバーフロー)。これによって、極端に大きい数値を扱う場合は、オーバーフローを起こしていないかどうか、気をつける必要がある。

これは、以前はCPUやOSが8ビットあるいは16ビットだった時代には通常扱う整数のメモリー割り当てサイズが小さかったこともあって、しばしばバグの原因になっていたが、今日においてはアーキテクチャ〜の進歩などで多くの場合は整数の割り当てサイズが大きくなったこともあり、あまり聞かなくなっている。

とは言え、整数のサイズで思わぬバグになっている可能性はあるので、是非とも気をつけたいところである。

タイトルとURLをコピーしました