while(i != i) { } - 是否有可能有一个始终为真的赋值
2022-09-04 05:34:45
最近,我接受了一家软件公司的面试,在技术能力倾向轮次中提出了以下问题:
以这样一种方式声明 i,即条件始终为真:
while(i != i) {
}
从技术上讲,在Java中可以分配这种东西吗?
最近,我接受了一家软件公司的面试,在技术能力倾向轮次中提出了以下问题:
以这样一种方式声明 i,即条件始终为真:
while(i != i) {
}
从技术上讲,在Java中可以分配这种东西吗?
NaN
不等于自身,所以
double i = Double.NaN;
但我不认为这是一个好的面试问题。
引用自 Java 语言规范:
NaN 是无序的,因此:
- 数值比较运算符 、 、 和 返回,如果其中一个或两个操作数都是 (§15.20.1)。
<
<=
>
>=
false
NaN
- 如果任一操作数为 .,则返回相等运算符。特别是,如果 或 是 ,则为 。
==
false
NaN
(x<y) == !(x>=y)
false
x
y
NaN
- 如果任一操作数为 (§15.21.1),则返回不等式运算符。特别是,是 且仅当 是 。
!=
true
NaN
x!=x
true
x
NaN