2016-06-30 18 views
2

我一直在學習C++大約一週,而且我認爲我已經掌握了一切,但顯然不是。我是中期節目,並決定爲了看看事情的進展而跑步。程序運行,但永遠不會結束。我期待它至少可以打印出第一個cout聲明。爲什麼我的循環不工作,因爲我期待?

#include <iostream> 
using namespace std; 

int main() 
{ 
    int floors, rooms, i = 0; 
    cout << "floors: "; cin >> floors; 
    while (floors > i) 
    { 
     cout << "rooms: "; cin >> rooms; 
     ++i; 
    } 
} 
+0

您收到任何錯誤? –

+2

你永遠不會檢查你的輸入是否成功。 – Galik

+0

您是否運行Avast Antivirus?並使用Code :: Blocks? –

回答

2

您沒有「刷新輸出」。根據不同抽象級別的各種設置,floors:提示可能不會顯示,直到還有更多的輸出與它一起出現。

你的程序,然後,等待輸入您的明顯提示之前。

添加<< flushcout聲明,以確保文字顯示在屏幕上:

您也應該驗證輸入cin是成功的,否則floors有一個不確定的價值和你的循環很可能也是去「永遠」。

cout << "floors: " << flush; 
if (!(cin >> floors)) 
    throw std::runtime_error("Value provided for 'floors' could not be read into an int!"); 
+5

除非您明確更改了代碼中的搭配,否則不應將'cin'和'cout'默認綁定在一起,而忽略顯式刷新的需要? – MicroVirus

+0

@微型病毒:嗯,這是一個好點 –

相關問題