2016-06-30 83 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

@微型病毒:嗯,这是一个好点 –

相关问题