为什么这个自我添加等于0?

时间:2015-06-22 21:51:41

标签: java addition

对于自我添加的增长速度感到好奇,我在Java中编写了一个快速的小循环来看:

ink source button

输出是意外的:

int count = 1;
while(true){
    System.out.println(count);
    count += count;
}

这是为什么? 0 0 0 0 0 ... 初始化为1,因此内部添加应该是countcount + count。为什么结果为0?

1 个答案:

答案 0 :(得分:13)

您发布的输出是输出的尾随行,而不是前30-31行。它的速度非常快,在前31次迭代后超过INT MAX并且加法结果为0.请记住,有符号整数的最大值为2^31,或者带有符号位的4个字节。 / p>

而不是while(true) {尝试while(count>0) {,您将看到它不是0时的前几次迭代。