c++中: int i; while(cin>>i,i!='9') {cout<<i<<endl;

c++中:inti;while(cin>>i,i!='9'){cout<<i<<endl;}此时如果输入double的数据为什么会进入死循环?... c++中:
int i;
while(cin>>i,i!='9')
{cout<<i<<endl;}

此时如果输入double的数据为什么会进入死循环?
展开
 我来答
璐人钇
2016-04-22 · TA获得超过1552个赞
知道小有建树答主
回答量:1365
采纳率:69%
帮助的人:661万
展开全部
因为输入缓冲没有被清除,当下一次循环时,你输入的数据仍然留在输入缓冲里,因此不等你重新输入数据就读取了缓冲里的数据。
一般输入类型不匹配都会出现这种问题,可以在cin前调用cin.clear()和cin.sync()清除输入缓冲
夜独行孤单
2016-04-22 · TA获得超过3460个赞
知道大有可为答主
回答量:2803
采纳率:82%
帮助的人:632万
展开全部
while(cin>>a)

将会一直测试输入流是否正常,如果输入流正常,就会继续循环,如果输入流错误,或者达到文件末尾,循环就会终止。
追问
输入double的话并没有终止,先转换成了int,去掉了小数,然后开始无限处理输cout。为什么不在第一次循环后再次处理cin来让我重新输入呢?它却是跳过条件里的cin直接处理循环体。?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mafangsan
2016-04-22 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2567万
展开全部
循环条件一直成立就死循环啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式