c++,有个循环代码没弄清楚

肆意行 2019-05-25 12:13:27
源代码1#include<iostream> int main() { using namespace std; const int ax=5; int bb[ax]; cout<<"请输入五次数字:\n"; for(int i=0;i<ax;i++) { cout<<"输入"<<i+1<<":"; while(!(cin>>bb[i])){ cin.clear(); while(cin.get()!='\n') continue; cout<<"请输入一个数字:"; } } return 0; } 源代码2#include<iostream> int main() { using namespace std; const int ax=5; int bb[ax]; cout<<"请输入五次数字:\n"; for(int i=0;i<ax;i++) { cout<<"输入"<<i+1<<":"; while(!(cin>>bb[i])){ cin.clear(); cout<<"请输入一个数字"; while(cin.get()!='\n') continue; } } return 0; } 如果按照我的逻辑,源代码2应该是这样的,但两个源代码实现结果是一样的。 while(!(cin>>bb[i]))这里有一个输入,如果输入是字母,将执行cin.clear()重置错误输入,然后cout<<"请输入一个数字"显示字符串,再到while(cin.get()!='\n')输入。为何源代码1 while(cin.get()!=‘\n’)在这个语句cout<<"请输入一个数字"上面,按照我的逻辑代码这样的话应该先执行while(cin.get()!='\n')这个语句,输入,然后再到显示cout<<"请输入一个数字"这段代码才对啊!为何1和2源代码实现结果是一样的。                                                                                            还有这个表达式cin.get()!=‘\n’,'\n'是不是代表着enter键,也就是说程序运行到这里我按下enter键,表达式cin.get()!='\n'应该等于0,所以while不执行,如果这样的话这条语句存在没有意义啊!但是我去掉这段代码之后实现结果不一样!
...全文
6 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CaptainXue 2019-05-25
  • 打赏
  • 举报
回复
你这个并没有判断输入的是不是字母,应该加一个判断非字母的语句

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧