繁体   English   中英

为什么这个循环无限运作?

[英]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 ,将i1 ,将其变为-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM