0

逆ポーランド電卓を作成していますが、彩度に問題があります。私はスタックを実装しましたが、問題が発生せずに取得できる最大の数値は 2147483647 であることがわかりました。したがって、この数値をスタックにプッシュしてから 1 を追加すると、得られる結果は -214748364 8 (負) になります。私がする必要があるのは、この負の数を返す代わりに、元の数 2147483647 を返すことです。基本的にこれを制限として使用します。同じことが負の側にも当てはまり、制限は -2147483648 です。情報を見逃していたり​​、コードを確認する必要がある場合はお知らせください。

4

1 に答える 1

0

最大int値は2147483647で、最小値は です-2147483648int値が循環するため、 に加算1すると2147483647が得られ、から-2147483648減算すると が得られます。1-21474836482147483647

この動作が望ましくない場合は、次のことができます

int a = 2147483647;
a += 1.0;                   // a is still 2147483647

また

int a = 2147483647;
int b = (int) (a + 1.0);    // b is also 2147483647

は(オーバーフローなし)a + 1.0を使用して計算され、結果はよりも大きい数値が になるという規則を使用してに変換されるため、これらは機能します。doubleintInteger.MAX_VALUEInteger.MAX_VALUE

于 2015-11-26T17:19:10.160 に答える