c++的循环问题

来源:百度知道 编辑:UC知道 时间:2024/09/25 13:15:15
#include <iostream.h>
void main()
{unsigned char i;
for (i=3;i>=0;i--)
cout<<i;
}
为什么会出现死循环,解释下

我通过对下列代码的测试得出:
#include <iostream.h>
void main()
{ unsigned char i;
for(i=3;i>=0;i--)
cout<<i<<"\t";
cout<<endl;
}

#include <iostream.h>
void main()
{ unsigned char i;
for(i=65;i<257;i++)
cout<<i<<"\t";
cout<<endl;
}

#include <iostream.h>
void main()
{ char i;
for(i=65;i<=128;i++)
cout<<i<<"\t";
cout<<endl;
}

#include <iostream.h>
void main()
{ char i;
for(i=-120;i>=-128;i--)
cout<<i<<"\t";
cout<<endl;
}

上面的四个程序都出现了死循环,通过分析得出是因为:当i的值相对于他所定义的类型溢出时,系统将对i随机的进行赋值(对于其赋值是否有规律暂时不知),使其仍满足for循环从而造成死循环。
例如,楼主所写的那个程序当for执行到i=0时,对i进行--运算。这时i溢出,随机的产生一个数,如i=200;这时i仍满足for循环,继续执行。当再次执行到i=0时,对i进行--运算,使得i的值再次变成200;for循环依旧满足,从而造成死循环。

--! 你的