loop用法 - java while loop




我(i== i+1){}永远循环的价值是什么? (3)

我从英国大学考试的高级编程课程中跨过了这个益智游戏

考虑以下循环,到目前为止,我是未声明的:

while (i == i + 1) {}

找到在此循环之前的 i 的定义,以便 while循环持续。

下一个问题,为此代码片段提出了同样的问题:

while (i != i) {}

对我来说很明显。 当然在另一种情况下它是 NaN 但我真的坚持前一个。 这与溢出有关吗? 什么会导致这样的循环在Java中永远循环?


double i = Double.POSITIVE_INFINITY;


只是一个想法:布尔人怎么样?

bool i = TRUE;

这不是 i + 1 == i 吗?


首先,由于 while (i == i + 1) {} 循环不会改变 i 的值,因此使该循环无限等同于选择满足 i == i + 1i 的值。

有很多这样的价值观:

让我们从“异国情调”开始吧:

double i = Double.POSITIVE_INFINITY;

要么

double i =  Double.NEGATIVE_INFINITY;

满足 i == i + 1 这些值的原因在中表示
JLS 15.18.2。 数值类型的加法运算符(+和 - )

无穷大和有限值之和等于无穷操作数。

这并不奇怪,因为将有限值添加到无限值应该会产生无限值。

也就是说,满足 i == i + 1i 大多数值都只是大的 double (或 float )值:

例如:

double i = Double.MAX_VALUE;

要么

double i = 1000000000000000000.0;

要么

float i = 1000000000000000000.0f;

doublefloat 类型的精度有限,因此如果您获取足够大的 doublefloat 值,则向其中添加 1 将导致相同的值。





types