2016-08-17 9 views
2

まあまあ私はC++の初心者ですので、LippmanのC++ Primer 5th Editionで演習をやっています。私は生成されたコードのどれも働かなかったので、非常に不満であり、どちらも答えの鍵からこれをしません。これは、コンパイル時に "0"を生成して実行します。どんな助けもありがとうございます。 x64 Macでコンパイルされます。Cinはwhileループとforループで無視されています

#include <iostream> 
int main() 
{ 
    int sum = 0; 
    for (int val; std::cin >> val; sum += val); 
    std::cout << sum << std::endl; 

    return 0; 
} 
+0

出力を求めるプロンプトを表示するには、コード化する必要があります。それ以外の場合は、データの入力を開始すると考えられます。 – NathanOliver

+1

入力のために何を入力しましたか? –

+0

は私のために[ideone](http://ideone.com/LG9a9S) – amit

答えて

1

プログラムは動作しますが、期待どおりに機能しません。

数字を続けて空白で区切って入力してから、ファイルの終わり(WindowsではCtrl-Z、空行ではUnixではctrl-d)または他の無効な入力を入力すると、cinは失敗状態になります。

そしてcinは失敗状態になると、それは終了し、(オーバーロードされたブールキャスト演算子を使用してBOOLするため、暗黙のキャストに)forループに偽与えます。そして、あなたのプログラムはそれを合計して出力します。数字を入力しなかった場合は、sumが初期化されたので、0が出力されます。

+0

私は間違いをしていると確信していますが、それが何であるか分かりません。私は数字を入力する機会を得られません。私はMacの端末でg ++を使ってコンパイルしています。/ –

+0

@StanDarsh例の端末セッションを追加します(スクリーンショットは、コピーしたテキストがないと思わない限り、スクリーンショットより優先されます)。また、コードにデバッグプリントを追加することもできます(coutではなくcerrを使用します)。cinが提供するさまざまなステータスメソッドをチェックして、失敗した理由を確認してください。 – hyde

関連する問題