C言語 オーバーフローとは?【取扱注意】

変数のshort型は、数値で-32768~32767まで表現できますが、
その範囲の数値以外を表す事ができません。

例えば、 short s = 50000; と言った値は変数sに設定できません。

このように、変数に表しきれない値を代入する事をオーバーフローと呼びます。

また、short s = 32767; s++; と言った処理を実行すると、
変数sにはどんな値が設定されるでしょうか。

当然、32767より1多い32768と言う値は、変数sでは表せませんが、
そのまま内部で処理が実行され、-32768と言う数値に変わってしまうのです。

この関係を図で示すと、以下のようになります。

オーバーフローは、バグの原因になる事が多いので、
基本的には、コンパイラが警告やエラーを出してくれますが、
普段から意識してプログラミングするようにしましょう。

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