没问题的啊, i等于1024的时候, i*=2为2048, 但是while的条件就不满足了, 所以下一次循环就不做了.
补充: 还是没问题啊, 这个程序不是要实现
1 + 2 + 4 + 8 + .... + 1024么?
正好j加到了1024, 没有加2048啊, 满足要求
再补充:): 先做j+=i, 这时i还是1024, 作完了以后再把i乘以了2, OK, 这以后i变成了2048, 但又有什么关系呢? 反正又不会加到j上面去.
当i==1024的时候
while(i<=1024)还是成立的
所以执行
{
j += i; //将1024累加到原和上
i *= 2; //i变为2048
}
下次while判断的时候i==2048,所以不进入循环,j+=i也就没有执行。