作者cjchen (cjchen)
看板C_and_CPP
标题[问题] 为何会陷入无穷回圈?
时间Mon Sep 21 20:44:16 2009
下面的程式会读入一个整数,但是如果刻意输入浮点数,像是 1.1,就会陷入无穷
回圈,请问是什麽缘故呢?
#include <iostream>
using namespace std;
int main()
{
int i = 0;
while (i <= 100) {
cin >> i ;
if (i < 0) i = 0;
cout << i << endl;
}
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.255.189.95
1F:→ frank99977:getchar(); 09/21 20:57
2F:推 dendrobium:cin.ignore(100,'\n'); cin.clear(); 09/21 21:47
3F:推 fabdawn:有宣告 float i; 试过了吗 09/21 21:53
4F:推 QQ29:原波的疑惑应该是 想了解 输入1.1 他cin>>会把他变成什麽吧? 09/21 21:58
5F:推 chrisjon:是因为i没增加吗?(说实在的...一直忘记<<和>.的作用=v=") 09/21 22:04
6F:推 seedbear:cin的结束符号有enter,space,tab,要先用ignore把buffer 09/22 15:02
7F:→ seedbear:内用不到的字元丢掉,下一个cin才有作用.可用cin.ignore() 09/22 15:03
8F:→ seedbear:看起来输入1.1给一个int,cin似乎只会用到1,後面的.1\n都 09/22 15:05
9F:→ seedbear:要ignore掉,但是输入1.1给float i就没问题了... 09/22 15:06
10F:→ seedbear:看有没有高手详解一下好了 09/22 15:08