1

C++ はオーバーフローで何をしますか? Javaはオーバーフローで何をしますか?

C++ でオーバーフロー エラーが発生した場合、可能な限り小さい数に移動し、そこから加算されると思いますが、正確にはわかりません。Javaがこの問題をどのように処理するかわかりませんか?

4

2 に答える 2

0

Javaでの整数加算に関する限り、オーバーフロー動作はJLS#15.18.2で定義されています。

整数の加算がオーバーフローした場合、結果は、十分に大きい2の補数形式で表される数学的合計の下位ビットになります。オーバーフローが発生した場合、結果の符号は2つのオペランド値の数学的合計の符号と同じではありません。

于 2012-05-21T21:42:35.267 に答える
0

C++ 標準の n3242 では

5 式 [expr]

パラグラフ 5.4:

式の評価中に、結果が数学的に定義されていないか、その型の表現可能な値の範囲内にない場合、動作は undefinedです。[ 注: C++ の既存の実装のほとんどは、整数オーバーフローを無視します。ゼロ除算、ゼロ除数を使用した剰余の形成、およびすべての浮動小数点例外の処理はマシンによって異なり、通常はライブラリ関数によって調整できます。—終わりのメモ]"

OPより

C++ でオーバーフロー エラーが発生した場合、可能な限り小さい数に移動し、そこから追加すると思います

いいえ、時々そのように思えます。

于 2012-05-21T21:37:28.907 に答える