2016-06-30 7 views
2

나는 약 1 주일 동안 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: 프롬프트는 더 많은 출력이있을 때까지 표시되지 않을 수 있습니다.

시각적으로 입력하라는 메시지가 표시되기 전에 프로그램에서 입력 대기 중입니다. 그렇지 않으면 floors은 불확정 값을 가지고 있으며, 여러분의 루프 아주 잘 갈 수

당신은 또한 cin에 입력이 완료되었는지 확인해야합니다

텍스트가 화면에 표시되어 있는지 확인하기 위해 cout 문에 << flush 추가 에 "영원히".

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

@MicroVirus : 음, 좋은 지적입니다. –