c++中有关cin的问题

#include<iostream>intmain(){intamount=0,value;while(std::cin>>value)//这里为什么当输入为字符时按回车... #include<iostream>
int main()
{
int amount=0,value;
while(std::cin>>value)//这里为什么当输入为字符时按回车键循环结束
if(value<=0)
++amount;
std::cout<<"Amount of all negaltive values read is "<<amount<<std::endl;
return 0;
}
展开
 我来答
zyd427
2012-09-27 · TA获得超过354个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:234万
展开全部
value 是int型变量,按下Enter键时,由于读入错误类型值,导致输入流cin的状态变为不可用,于是退出循环。
cin的几种状态:
cin.eof()
cin.bad()
cin.fail()
cin.good()
当前三者 cin.eof() & cin.eof() & cin.fail() 为0时,
此时cin.good() 为1,否则cin.good()为0

楼上提到的返回类型为void,这是错误的,因为常使用 cin >> a >> b >> c;如果是void型,这明显不可行。返回的类型与cin本身类型一致,即一个istream&类型,由于流没有复制构造函数,因此也没有返回类型为istream的成员函数.
OliverXu
2012-09-27 · TA获得超过841个赞
知道小有建树答主
回答量:610
采纳率:0%
帮助的人:427万
展开全部
因为while中的判断条件是一个布尔型,只有true和false两种情况,你的value是一个int类型的,当输入字母时,value被传递就不是一个int型常量了,就是错误的,跳出循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
志怪小杰
2012-09-27
知道答主
回答量:30
采纳率:0%
帮助的人:17.1万
展开全部
std::cin函数的返回类型好像为void,所以按回车键结束字符串输入后,std::cin>>value会返回一个空的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玉清使者
2012-09-27 · 超过14用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:37.7万
展开全部
因为value是int类型的,当输入字符,cin >> value 返回0,因此跳出while循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
霹雳斗帝
2012-09-27
知道答主
回答量:47
采纳率:0%
帮助的人:28.7万
展开全部
那是因为你声明的value是int型的!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式