[問題] 為何會陷入無窮迴圈?

看板C_and_CPP (C/C++)作者 (cjchen)時間16年前 (2009/09/21 20:44), 編輯推噓5(505)
留言10則, 6人參與, 最新討論串1/1
下面的程式會讀入一個整數,但是如果刻意輸入浮點數,像是 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

09/21 20:57, , 1F
getchar();
09/21 20:57, 1F

09/21 21:47, , 2F
cin.ignore(100,'\n'); cin.clear();
09/21 21:47, 2F

09/21 21:53, , 3F
有宣告 float i; 試過了嗎
09/21 21:53, 3F

09/21 21:58, , 4F
原波的疑惑應該是 想了解 輸入1.1 他cin>>會把他變成什麼吧?
09/21 21:58, 4F

09/21 22:04, , 5F
是因為i沒增加嗎?(說實在的...一直忘記<<和>.的作用=v=")
09/21 22:04, 5F

09/22 15:02, , 6F
cin的結束符號有enter,space,tab,要先用ignore把buffer
09/22 15:02, 6F

09/22 15:03, , 7F
內用不到的字元丟掉,下一個cin才有作用.可用cin.ignore()
09/22 15:03, 7F

09/22 15:05, , 8F
看起來輸入1.1給一個int,cin似乎只會用到1,後面的.1\n都
09/22 15:05, 8F

09/22 15:06, , 9F
要ignore掉,但是輸入1.1給float i就沒問題了...
09/22 15:06, 9F

09/22 15:08, , 10F
看有沒有高手詳解一下好了
09/22 15:08, 10F
文章代碼(AID): #1AjtKXRZ (C_and_CPP)
文章代碼(AID): #1AjtKXRZ (C_and_CPP)