在一个线程应用程序中,“while(i == i)”是一个非无限循环吗?

问题:

我刚刚收到一个我无法回答的问题。
假设你在Java中有这个循环定义:

while (i == i) ;

如果循环不是无限循环,则i的类型和i的值是该程序只使用一个线程

回答:

double i = Double.NaN;

Double.equals()的API说明了答案:“Double.NaN == Double.NaN的值为false”。这在Java语言规范“Floating-Point Types, Formats, and Values”中详细说明:

 NaN无序,所以如果任一个或两个操作数都是NaN,数值比较运算符<<=>>=返回false。如果任一操作数为NaN,则等式运算符==返回false,如果任一操作数为NaN,则不等式运算符!=返回true
  特定,
(x<y) == !(x>=y)false如果xyNaN

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How can “while (i == i) ;” be a non-infinite loop in a single threaded application?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

6 + 4 =