#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。
关于C++输入cin的问题,下面的程序,如果输入的不合法,那就将陷入死循环...
接着while循环继续读输入缓冲区,依然类型不匹配,于是就成了死循环
...后输入数字循环正常,但输入字母就会陷入死循环呢?求解!
cin输入原理:程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入.int...
C++关于cin的简单问题。 下面的程序运行有乱码或段错误。 求原因...
i++;} 当进你这个循环管的时候,i=-1,在 while (i < j) {上一行加i++;
C++程序问题,请大虾解答.为啥非法输入是数字这个程序正常,但是是字母之 ...
如果能正常退出,说明程序没有问题,是对的。因为你其它的非法输入所对应的ASCII码基本都不会是1,2,3,0,比如说大写字母好像是从65还是67开始的,小写字母是从97开始的,这些非0数在for循环中做条件判断时都是被认为是真值,所以会一直进循环 。要想实现你的意图,要么把choice改成char型,要么就...
c++用for循环来cin的话要怎样,我的程序出了什么问题啊?纠结了好半天了...
首先,你cin语句 不用加setw ,你输入时候用一个空格间隔就行了,你输出语句用 setw(2),把setw后面的数据限制在2个宽度(当实际输出大于2个宽度时,会按实际长度输出),所以唯一的可能性就是你 输出了 124 大于2个长度了,你用的编译器不支持输出实际长度。你可以换VS2010试试,我运行没有问题。...
为什么c++执行这个程序时不能循环输入,而是不停的输出? 怎么改进才能...
可以循环输入的。cin是一个阻塞函数,不可能会一直循环
C++ 关于cin输入
\/\/注意着两张图片,第二张 我把cin一行注释起来了,由于类型不同,int a并没有储存你输入的a的adcll码,
c++用cin输入数组问题
只能先用一行输入a,再用一行输入b[a]——因为cin是从右边开始压栈的,就是先压b[a]再压a,显然压b[a]时还不知道a是多少,后面输入了a,但改变不了已经压栈了的内容。就是说这种情况一定要保证操作b[a]时a必须是已知的。但这种东西与编译器关系很大,也许后来的编译器异想天开,弄个别致的...
c++ 关于cin.clear()的一点小问题
include <conio.h> using namespace std;int main(){ int a = 0 , b = 1;cin >> a ;cout << a << endl ;if(cin.fail())\/\/如果发生输入错误的话 { cin.clear(); \/\/清除cin流的错误状态 cin.ignore();\/\/提取并舍弃错误输入 } cin >> b ;cout << b << endl;} ...
c++ 的cin输入和类型通用的问题
中间包含了强制类型转换,比如double型赋值给int整型,就会发生数据截断。 而输入流“cin>>”没有此功能,它只要求输入的内容与变量的类型相符即可,若不相符,则此语句为非法(但是并非所有的编译器都报错)。自动忽略此语句。数据在内存中保存为二进制形式,也即ASCII码,没有错误。祝你好运!!