作者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