为什么这个自加等于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 + count
或1 + 1
。为什么结果是0?
您发布的输出是输出的结尾行,而不是前 30-31 行。它运行得如此之快,以至于在前 31 次迭代之后,它超出了 INT MAX
并且加法结果为 0。请记住,有符号整数的最大值为 2^31
,或 4 个带符号位的字节。
尝试 while(count>0) {
而不是 while(true) {
,您将看到它不是 0 的前几次迭代。
很好奇自加法的增长速度,我在 Java 中写了一个快速的小循环来查看:
int count = 1;
while(true){
System.out.println(count);
count += count;
}
输出是意外的:
0
0
0
0
0
...
这是为什么? count
初始化为1,所以内加法应该做count + count
或1 + 1
。为什么结果是0?
您发布的输出是输出的结尾行,而不是前 30-31 行。它运行得如此之快,以至于在前 31 次迭代之后,它超出了 INT MAX
并且加法结果为 0。请记住,有符号整数的最大值为 2^31
,或 4 个带符号位的字节。
尝试 while(count>0) {
而不是 while(true) {
,您将看到它不是 0 的前几次迭代。