C++自我扫盲_1_int变量cin输入字母报错
为啥给int赋值字符常量没问题,通过cin输入字符就会出错?
输入数字:
输入字母:d(图三)
cin>>i_value语句返回false!所以查了下大佬知识
看到同样问题的博客https://bbs.****.net/topics/330101308?locationNum=10里大佬的回答
参考10楼:楼主的问题根源在于:你可能认为字母和一些符号才算字符。其实,翻开字符ascii表,你可以看到数字字符也是字符,制表符、换行符、分页符、空字符之类的也列在其中,也就是说,'a'是字符,'1'同样是字符,所以输入字符的时候,你可以输入a,也可以输入1,都同样是一个字符。但是在输入整数的时候,你只能输入一串数字代表一个整数,如果你输入的是字母,它无法代表一个整数,输入失败,可能导致后续的输入无法正常进行,甚至导致后续的程序执行不正常。
自我理解 :图三输入d相当于下面的程序
'c'字符常量存储的是数值99,字母c则没有指明是字符常量,编译器不回去对照ASCII表
char c_value;
cin>>c_value; //输入1,‘1’本身也是个字符,cin的>>可以重载为 输入字符的>>
int i_value;
cin>>i_value;//输入1,1是整数,cin的>>重载为输入int的>>
cin>>i_value;//输入c, cin需要接受整型,c是个字符,c不能代表整数,不像int i_value=‘c’;这个赋值一样,'c'自动转化为int(99),反而像 int i_value=c,所以cin的>>重载为异常处理的>>,返回false,i_value=0。
------------------------------------------------------------------------
程序小白,求大佬指正,谢谢大佬们