我在程序中出現了一種奇怪的行爲,我花了很長時間試圖推斷出原因。這是一個毫無意義的無限循環。測試這些代碼行(懷疑)我得到了同樣的結果。每次我輸入一個非數字值這樣的符號,程序就會運行一個無限循環打印零點,我猜測cout是如何表示輸入的錯誤值。我想知道爲什麼來自cin的奇怪行爲,當它發現錯誤的讀數時,打印所有這些零而不是停止。cin在非數字值中讀取時出現無限循環
#include <iostream>
using namespace std;
int main()
{
int n = 0;
while(n >= 0) {
cin >> n;
cout << n << endl;
}
return 0;
}
'cin'是在錯誤狀態下,你會知道如果你檢查了它,但你不知道。 – 2015-02-07 09:38:06
可能的重複[爲什麼cin.clear()修復由cin輸入錯誤造成的死循環?](http://stackoverflow.com/questions/13715131/why-does-cin-clear-fix-an-infinite -loop引起的按輸入壞到CIN) – 2015-02-07 09:39:25