0

以下は私のコードですが、ifステートメントは機能しません。

int i = 0;
while (true) {
  long l = fibonacci(i++);
  if (l < 0L && l > Long.MAX_VALUE) {
    System.out.println("over");
    break;
}

}

long値が に達したかどうかを知るにはどうすればよいLong.MAX_VALUEですか?

4

1 に答える 1

10

値がalongの境界を超えた場合long、オーバーフローが発生します。このオーバーフローにより、次のフィボナッチ数は負の数に見えます。したがって、ゼロ未満の数値をチェックすることは正しいです。しかし、それが より大きいかどうかをチェックする必要はありません。Long.MAX_VALUEなぜなら、nolongはその条件を満たすことができないからです。これ&&は別の間違いでした。数値は、ゼロ未満であると同時にその (任意の) 正の数値より大きいことはできません。

あなただけが必要です:

if (l < 0L) {
于 2013-10-15T18:13:38.397 に答える