逆ポーランド電卓を作成していますが、彩度に問題があります。私はスタックを実装しましたが、問題が発生せずに取得できる最大の数値は 2147483647 であることがわかりました。したがって、この数値をスタックにプッシュしてから 1 を追加すると、得られる結果は -214748364 8 (負) になります。私がする必要があるのは、この負の数を返す代わりに、元の数 2147483647 を返すことです。基本的にこれを制限として使用します。同じことが負の側にも当てはまり、制限は -2147483648 です。情報を見逃していたり、コードを確認する必要がある場合はお知らせください。
1 に答える
0
最大int
値は2147483647
で、最小値は です-2147483648
。int
値が循環するため、 に加算1
すると2147483647
が得られ、から-2147483648
減算すると が得られます。1
-2147483648
2147483647
この動作が望ましくない場合は、次のことができます
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
を使用して計算され、結果はよりも大きい数値が になるという規則を使用してに変換されるため、これらは機能します。double
int
Integer.MAX_VALUE
Integer.MAX_VALUE
于 2015-11-26T17:19:10.160 に答える