プログラミング 始めてみようかな!? 其の7



 オーバーフローと聞くと、なんとなく何かが溢れてしまったイメージが浮かびますが、プログラミングでは何が溢れるのでしょうか。


オーバーフロー(overflow)

 算術オーバーフロー、桁あふれ、算術的あふれ、等とも呼ばれ、ある計算を行うために確保した桁(格納域に記録できる範囲)の上限を演算結果が超えてしまい、演算の継続や表示ができなくなることだそうです。
 使用する数値に見合った桁(格納域)を確保しておくことが大切なようです。

 オーバーフローを起こすと、プログラムだけでなく、メモリ領域上の隣接する無関係の区画にデータを書き込んで内容を損壊してしまうといったことが起きる場合もあるそうなので、オーバーフローが発生した際の対処方法を学んでおいた方が良さそうです。
 メモリ領域のオーバーフローには、バッファ領域について発生するものを「バッファオーバーフロー」、スタック領域について発生するものを「スタックオーバーフロー」と言うそうです。


アンダーフロー(underflow)

 オーバーフローに対してアンダーフローもあります。
 アンダーフローは、浮動小数点演算処理で、演算結果の指数部が小さくなり過ぎ、数値が表現できなくなることだそうです。
 例えば、1 ÷ 3 = 0.33333333...ですが、小数点以下二桁までしか扱えないとしたら 0.33 と表示されます。しかし、演算結果が 0.00123 のようになる場合、指数部の桁数が足りないので表現ができません。このような場合、 0 と表現されることが大半らしいです。