2016-11-17 10 views
0

:数学の代わりにミッドポイントとアルゴリズムの実装を征服

int mid = (lo + hi)/2; 

int mid = lo + (hi - lo)/2; 

を、私は何の違いを見ていないし、まだ、私は以下のものを使っている人は見たことがありません。計算上の違いはありますか?

+0

あなたはそれほど多くを見たことがありません。 –

+0

あなたはlo = 1、hi = 2147483647を試すことができます。 –

+1

そしてこれ[oldie、but goodie](https://research.googleblog.com/2006/06/extra-extra-read-all-about-it-nearly。 html) –

答えて

1

計算に32ビット符号付き2進整数の最大正の値が存在します。

私たちは、この値は、その後100

int lo = 60; 
int hi = 80; 

lo + hi = 60 + 80 = 140>100であると仮定し、integer overflowエラーの原因になりますので、そうするのは危険です。

+0

"整数オーバーフローエラーが発生します"整数オーバーフローは実際にはエラーではありませんか?それは、コンピュータが表現するには多すぎるビットを必要とする数の誤った状況を処理する方法です。 – dorukayhan

関連する問題