2016-06-30 16 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を実行していますか?とコード::ブロックを使用して? –

答えて

2

「出力をフラッシュしませんでした」。さまざまな抽象レベルの設定に応じて、floors:プロンプトは表示されない場合があります。

あなたのプログラムは、視覚的に入力を求められる前に、入力を待っています。

テキストが画面に表示されていることを確認するためにあなたのcoutステートメントに<< flushを追加します。

あなたはまた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

@MicroVirus:これはいい点です –

関連する問題