为了账号安全,请及时绑定邮箱和手机立即绑定

为什么“cin” 会被直接跳过,求详细解释?

为什么“cin” 会被直接跳过,求详细解释?

C++ C
慕田峪9158850 2021-12-10 11:07:07
int start,day,re;cout<<"Hi,do you want to know what day is it in the future?Let this program help you!"<<endl;cout<<"Please ender what day is it today,for example,if today is Sunday please enter 0"<<endl;cin>>start;cout<<"How many days after today?(less than 366!!!!)"<<endl;cin>>day;如上所示,在第一个cin时候输入一个小数给start,则第二个cin直接被跳过,就是不能给day赋值了?求牛人解释。用F10 调试后,发现:start的值为3(如输入3.5),但day的值一直没有变,也是直接跳过。
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

因为start定义为整型变量,所以不能接受小数,第二个cin不是被跳过,而是当你输入.的时侯,第一个cin就异常结束了,所以.后面输入的数字就留在cin的缓冲区了,当进行第二个cin输入的时侯,留在缓冲区中的数字就当作第二个cin的输入赋给变量day了,不知是不是这样的,你实验一下便知。

查看完整回答
反对 回复 2021-12-13
?
森林海

TA贡献2011条经验 获得超2个赞

不是被跳过了,而是你定义的是两个整数,当你输入的第一个是一个小数的时候,整数部分被赋给第一个数了,小数部分放在了缓存里。
当执行到应该输入第二个数的时候,电脑直接将缓存里的小数部分当作第二个输入,但因为第二个数应该是整数,所以相当于输入的是一个无效的数,小数部分没有被赋给day. day 的内容还是无定义状态的。
你可以尝试下第一个数输入一个整数,第二个数的时候输入如 .35
并观察day的值,你就会明白了。

查看完整回答
反对 回复 2021-12-13
  • 2 回答
  • 0 关注
  • 675 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信