#include <iostream.h>
main()
{
int i;
while(i!=-1)
{
cout<<"i="
cin>>i; /*请输入不是一个字符如'a'试试*/
cout<<endl;
}
}
上面的程序,如果输入的不合法,那就将陷入死循环。解决的办法 有个一,把cin>>i;语句移到判断循环的语句,那么输入的如果是不合法的变量,他将跳出循环 。
那为什么把 cin>>i; 这个语句移到判断循环的语句,那么输入的如果是不合法的变量,他将跳出循环呢?
追答你的意思是写成while(cin>>i){},这样的话,当判断到输入缓冲区的数值的类型不匹配时,cin的方法就会返回一个布尔值fasle,就不再执行循环体了。我也测试过了,当输入不匹配时,确实是返回了0。