对于自我添加的增长速度感到好奇,我在Java中编写了一个快速的小循环来看:
ink source button
输出是意外的:
int count = 1;
while(true){
System.out.println(count);
count += count;
}
这是为什么? 0
0
0
0
0
...
初始化为1,因此内部添加应该是count
或count + count
。为什么结果为0?
答案 0 :(得分:13)
您发布的输出是输出的尾随行,而不是前30-31行。它的速度非常快,在前31次迭代后超过INT MAX
并且加法结果为0.请记住,有符号整数的最大值为2^31
,或者带有符号位的4个字节。 / p>
而不是while(true) {
尝试while(count>0) {
,您将看到它不是0时的前几次迭代。