C++双重for循环

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:23:17
void main()
{
int i=1,j=1;
for(;i<1000;i=i*2)
for(;j<1000;j=j*2)
cout<<i<<" "<<j<<endl;
}

为什么这样写i只会=1?而下面的写法就可以循环下去?

void main()
{
int i,j;
for(i=1;i<1000;i=i*2)
for(j=1;j<1000;j=j*2)
cout<<i<<" "<<j<<endl;
}

这俩个有什么区别?

int i=1,j=1;
for(;i<1000;i = i*2 )
{
for(;j<1000;j = j*2)
{
cout<<i<<" "<<j<<endl;
}//当i=1,运行到这里时j已经为1024
//再开始i=2时,j仍然为1024,当然不能执行第二层循环的语句
}

for(i=1;i<1000;i=i*2)
{
for(j=1;j<1000;j=j*2)
{
cout<<i<<" "<<j<<endl;
}//当i=1,运行到这里时j已经为1024
//再开始i=2时,j变回了1,当然会执行第二层循环的语句
}

这个很简单:
第一个:
int i=1,j=1;
for(;i<1000;i = i*2 )
{
for(;j<1000;j = j*2)
{
cout<<i<<" "<<j<<endl;
}//当i=1,运行到这里时j已经为1024
//再开始i=2时,j仍然为1024,当然不能执行第二层循环的语句
}

第二个里面
for(i=1;i<1000;i=i*2)
{
for(j=1;j<1000;j=j*2)
{
cout<<i<<" "<<j<<endl;
}//当i=1,运行到这里时j已经为1024
//再开始i=2时,j变回了1,当然会执行第二层循环的语句
}

for(;i<1000;i=i*2)
for(;j<1000;j=j*2)
当i第一次循环结束的时候,j已经很大了,所以