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;
} 展开
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;
} 展开
5个回答
展开全部
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的成员函数.
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的成员函数.
展开全部
因为while中的判断条件是一个布尔型,只有true和false两种情况,你的value是一个int类型的,当输入字母时,value被传递就不是一个int型常量了,就是错误的,跳出循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
std::cin函数的返回类型好像为void,所以按回车键结束字符串输入后,std::cin>>value会返回一个空的指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为value是int类型的,当输入字符,cin >> value 返回0,因此跳出while循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那是因为你声明的value是int型的!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询