为什么这个自加等于0?

Why does this self addition equal 0?

很好奇自加法的增长速度,我在 Java 中写了一个快速的小循环来查看:

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

输出是意外的:

0
0
0
0
0
...

这是为什么? count初始化为1,所以内加法应该做count + count1 + 1。为什么结果是0?

您发布的输出是输出的结尾行,而不是前 30-31 行。它运行得如此之快,以至于在前 31 次迭代之后,它超出了 INT MAX 并且加法结果为 0。请记住,有符号整数的最大值为 2^31,或 4 个带符号位的字节。

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