C++循环问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 12:05:20
#include <iostream>
using namespace std;
int main()
{int i=1,sum=0;
while (i<=100)
{
sum=sum+i;
i+=i;
}
cout<<sum<<endl;
return 0;
}
一个菜鸟问题,为什么结果是127.
4楼说的很详细,大概意思知道了,在C++里,sum=sum+i不怎么懂,就是前一个sum代表什么,后一个sum代表什么(如果是第一步的话是不是0),sum后面的i代表什么(是0吗,初值?),i+=i,前一个i是什么,后一个i是什么.为什么i=i+i?(是不是i=两个初值相加),还有一点,是不是先计算i+=i,再把i的值赋给出sum?还是先计算sum=sum(初值)+i(初值),i=i+i(都是初值)?循环条件i++不是很明白.看来还要多练习才行.

#include <iostream>
using namespace std;
int main()
{
int i = 1,sum = 0;
int j = 0,temp = 0; //加入2个过渡的变量
while (i <= 100)
{
temp = sum + i;
sum = temp;
j = i + 1;
i = j;
}
cout << sum << endl;
return 0;
}
这样比较容易懂吧
就单独一句话来说,i++, ++i, i+=1, i=i+1这四个是等同的效果,都是在原来的基础上加1

i+=i; 改成i++;

i+=i 相当于i=i+i啊.
1+2+4+8+16+32+64=127

从程序一点一点分析。一开始sum=1+0=1 i=1+1=2之后,每一不屑在下面:
sum=1+2=3 i=2+2=4
sum=3+4=7 i=4+4=8
sum=7+8=15 i=16
sum=15+16=31 i=32
sum=31+32=63 i=64
sum=63+64=127 这时=64+64>100循环结束,
所以是127