[英]why is this loop working infinitely?
class kk{
public static void main(String args[]){
int n=0;
for (byte i = 0; i<=255; i++)
{
n++;
}
System.out.println(n);
}
}
上面的for循环继续无限。 如果有人能回答为什么,我将不胜感激?
因为Java中的任何数值都是默认签名的 。
因此,一个byte
保存范围[-128, 127]
,该范围始终满足for
循环的条件。 每当i == 127
,将i
加1
,将其变为-128
。
这个
for (byte i = 0; i<=255; i++)
是一个无限循环,因为i
总是<= 255
。
由于Java byte
是有符号的,它们的值可以是-2^8
(是-128)到(2^8)-1
(是127)。
一旦i
是127,添加一个会把它变成-128,这显然小于255
。 所以这个循环将永远运行。
[-128, 127]
的范围内。 因此,当字节127递增时,它溢出到-128并且您的循环无限期地继续。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.