为什么会 死循环?

供稿:hz-xin.com     日期:2024-04-25
【求解】为什么会陷入死循环?

while(1) 肯定是让你的程序陷入死循环了。
每次到scanf的时候,程序就会在这阻塞,等待用户输入数据,并清空缓冲区,等待的时候看起来好像不是死循环了,其实你的程序跳不出这个while的。
当输入错误的时候,scanf没有得到想要的输入,但缓冲区有数据,就会跳过scanf,不停的循环了。
在循环结尾的地方清空缓冲区应该对会有效果。fflush(stdin);

你是在这里产生死循环了while(e.hasMoreElements());
应该把这里的分号去掉

你的程序里,内部循环和外部循环都是用的同一个变量i作为循环的判断条件,
这样在外部循环中没当i被++处理后,
都会被内部循环:
for(i=0;i<5;i++)
{
printf("hello");
if(i<2) break;
}
给先置回0,再if(i<2) break;出去,
循环往复

会一直输出helloworldworldworld,假如说你这个"int main"能够执行的话。理由是for循环中的变量i都指的是同一个变量。这三个for()循环每次都将变量 i 重新赋值0,然后执行循环体;正如dsydeyx所说的,i 总在0,1之间变化。

因为i总在0和1之间变化。只要循环条件满足,会一直循环。

for(i=0;i<5;i++)
{
for(i=0;i<5;i++) //执行到这里i=0

{
printf("hello");
if(i<2) break;
}
for(i=0;i<3;i++)
printf("world");
//执行完之后i=3
}
所以 i一直在0~3之间循环,所以退不出最外层循环

循环标量i 一直在变化.... 多定义几个变量用于循环的变量 j,k什么的就可以了