for(int i=0; i<n && cin>>a[i]; ++i); //为什么输入非数字后会自动停止

intFill_array(inta[],intn){for(inti=0;i<n&&cin>>a[i];++i);//为什么输入非数字后会自动停止returni;}... int Fill_array(int a[],int n)
{
for(int i=0; i<n && cin>>a[i]; ++i); //为什么输入非数字后会自动停止
return i;
}
展开
 我来答
匿名用户
2013-08-06
展开全部
cin内部维护了一个流状态标记
cin对各种输入类型都进行了重载,如果输入字符和输入类型不兼容,cin会把流状态标记设置为失效
cin在if,for,while等条件判断语句里会由operator void*提供的隐式转换根据流状态返回true或false
cin >> a[i]返回cin

所以cin >> 整型而输入字符型时,cin的failbit被设置,然后cin >> a[i]返回false,导致条件检测i<n && cin>>a[i]失败,循环结束
匿名用户
2013-08-06
展开全部
C++在流取值会作相应的判断,cin>>a[i]; a[i]是一个整型。如果你输入的不是数字(即不是整型),编译器在流是寻找对应类型的(即int 整型)。一直找不到,就会在相应的标志中置位1。然后~~~死。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-06
展开全部
因为你定义的是int (整数类型),要想输入非数字的运行的话,可以用char等试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式