2016-04-12 12 views
-2

整数の最大値(オーバーフロー)を超えると、最小値が割り当てられます。
System.out.println(Integer.MAX_VALUE+1);出力:-2147483648
ここで例外をスローするのではなく、プログラムは誤った値を返します。
この機能は、どのようにプログラマーやデザイナーに役立ちますか?オーバーフローまたはアンダーフローが発生したときにプログラムが例外をスローしない理由

+0

これは間違った値ではありません。絶対に正しいです - Javaの整数は32ビットの符号付きです.MAX値に1を加えると、最も低い値に戻ります。 .. http://stackoverflow.com/a/5131206/4252352 –

+0

データタイプの観点から絶対に@MarkKeen。しかし、開発者が(int x = 3 * 1000000000のような)計算のためのコードを書くと、変数xに負の値を割り当てることは期待しません。なぜ私はそれを開発者の視点で間違った価値と言いますか。プロジェクトのこの問題に直面し、3%の数値を計算しました。私は、Javaが例外またはエラーを介して間違った結果を計算することはないと誤解していました。 –

+0

これは、オーバーフローがうまくいくことをどのように好むかに関する単なる意見です:予期しない結果を出すのではなく、例外を投げる?これは疑問のない質問です。これはどのように動作するのか、あなたはすでにこれを知っているので、それに応じた作業、つまりコードのチェック/テスト/正しい変数の割り当て(int、longなど..)があります。私はそこには、すべての人が望んで期待している通りのプログラミング言語があるとは言えません... –

答えて

-1

これは、1回の算術演算のたびにオーバーフローをチェックする必要がないため、コードの実行速度が向上します。

0

Javaの元の実装者は、計算がオーバーフローを引き起こしたかどうかを確認する必要がないというオーバーヘッドを求めていたと思います。プログラム的にチェックすることができます。たとえば、How does Java handle integer underflows and overflows and how would you check for it?

伝統的なCとC++が整数を処理する方法であるため、先例があります。

関連する問題