谁能解释一下这个程序???

来源:百度知道 编辑:UC知道 时间:2024/04/30 01:20:12
#include <iostream>
using namespace std;
int main()
{
int i=1;
int s=0;
for(;i<=100;i++)
{
s=s+i;
}
cout<<"s="<<s<<endl;
return 0;
}
这个程序的运行结果为s=5050,如果把for循环语句里的i<=100和i++颠倒下变成
#include <iostream>
using namespace std;
int main()
{
int i=1;
int s=0;
for(;i++;i<=100)
{
s=s+i;
}
cout<<"s="<<s<<endl;
return 0;
}
为什么运行结果变变成了s=2147483647

for语句的特点:for(循环变量赋初值;循环条件;循环变量增值);这是不能随便改的,这个程序就是计算1+2+3+4...........+100的值

第一个for循环i<=100的条件会在i=101时停止for循环,而第二个for循环中i++这个条件是永远成立的,所以才会出现那么大的数据,也就是说第二个程序的for循环形成了死循环

因为这个s是一个随机数,“for(;i++;i<=100)”这是一个错误的语句~~for语句中先运行第三个语句,在运行第二个语句 ,如果不满足第二个语句,循环才退出,而你的却永远满足~~

程序的功能是完成1到100的连加,

for语句的语法就是
for(exp1;exp2;exp3)
其中:exp1是初始化;
exp2是循环结束条件,exp3是递增变量。

所以for(;i++;i<=100) 就是把i++作为了循环结束条件,由于Int型变量是32位的,这样以后就要以致算到i等于0,即:i一直加到最大值,又依次返回变成0
变成了:从1加到int的最大值65535。