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了,不知是不是这样的,你实验一下便知。
森林海
TA贡献2011条经验 获得超2个赞
不是被跳过了,而是你定义的是两个整数,当你输入的第一个是一个小数的时候,整数部分被赋给第一个数了,小数部分放在了缓存里。
当执行到应该输入第二个数的时候,电脑直接将缓存里的小数部分当作第二个输入,但因为第二个数应该是整数,所以相当于输入的是一个无效的数,小数部分没有被赋给day. day 的内容还是无定义状态的。
你可以尝试下第一个数输入一个整数,第二个数的时候输入如 .35
并观察day的值,你就会明白了。
- 2 回答
- 0 关注
- 675 浏览
添加回答
举报
0/150
提交
取消