int DoWhile()
{ int num;
do 
{
std::cout<<"Guess my secret number(0-32)";
std::cin>>num;
std::cout<<num;
}
while (num!=4);
return 0;}在这里的cin>>num里如果值为大于10位的数字,或者是字母的话,就会出现死循环。不知道是什么原因?请大家告之与小弟....

解决方案 »

  1.   

    大于10位的话,很可能是超出了int的所能表达的最大值。
    如果要避免死循环,只能自己做检查。
      

  2.   

    这是cin的问题,我单步跟踪了楼主的代码,用的数据是字母,然后这个字母被解释为一个负数(不是4),之后的cin便不会再被执行了,所以会无限循环。至于cin的问题,呵呵,我也不知道,GZing~~~
      

  3.   

    为避免出现死循环,用scanf()函数检查输入数据的有效性。这样就可以屏蔽掉字母等非法字符