問題CPP00183の解答例と解説 C++ Lv.1
範囲を超えた場合(15分)
<解答例 1>
F11キーでフルスクリーンモード、Escキーで元に戻ります。
<実行結果>
F11キーでフルスクリーンモード、Escキーで元に戻ります。
int 型の値を返すところにINT_MAX + 1 を返した結果は、INT_MINの値(-2147483648)になっているね。つまり int 型の場合、範囲を超えると、循環してしまうんだね。そして、unsigned int の値を返すところに -1 を返そうとしても、2147483647 になってしまっているね。これも値が循環していることを表しているよ。
こういうことが起きるようなプログラムでもコンパイルは出来てしまう(コンパイラのオプションによってはwarning(警告)メッセージが出されることもあるよ)し、実行時にもエラーにならないよ。だから、バグになっても見つかりにくいということがあるよ。そして、double 型の値を返すところに DBL_MAX の2倍の値を返そうとすると、inf (無限大)になってしまっているよ。
本格的なプログラムを作るときは、自分が作るプログラムが取り得る値の範囲を把握しておいて、範囲を超えそうな場合は、適切な型を選ぶ必要があるよ。
こういうことが起きるようなプログラムでもコンパイルは出来てしまう(コンパイラのオプションによってはwarning(警告)メッセージが出されることもあるよ)し、実行時にもエラーにならないよ。だから、バグになっても見つかりにくいということがあるよ。そして、double 型の値を返すところに DBL_MAX の2倍の値を返そうとすると、inf (無限大)になってしまっているよ。
本格的なプログラムを作るときは、自分が作るプログラムが取り得る値の範囲を把握しておいて、範囲を超えそうな場合は、適切な型を選ぶ必要があるよ。
初めての方へ:このページは、このサイトで用意しているプログラミング問題の解答と解説のページです。このサイトではブラウザ上からプログラミングができます。会員登録(無料)して、プログラミングしてみませんか?
新規登録
新規登録