2017-11-04 15 views
-4

私はプログラムが1または2以外の数字が入力されるたびに終了するようにプログラムをコーディングしようとしています。 "終了メッセージ"を表示することができますが、プログラムは終了するのではなく再起動します。私はそれがスイッチのデフォルトでは "リターン0"がないためかもしれないと信じていますが、私はそれを含めたときにvoid calcitの戻りエラーを受けていました。私はそれが私が行方不明である単純なもののように感じる。スイッチのデフォルトの出口プログラム?

+1

である「が、プログラムの再起動」それはそうではないということヘッダファイルをインクルードする必要があります。ここで 'do {...} while(真);'を見てください。このループから抜けることは決してありません。これは 'if(resp!= '1' || resp!= '2')'が到達不能であることを意味します。 – DimChtz

答えて

1

終了しないプログラムでの問題は、決して終了しないループdo {blah blah....} while (true)があるためです。

do { blah blah blah ...} while (resp == '1' || resp == '2'); 
-1

は同様にあなたのループを終了します ブレークはあなたがあるので、あなたを助けないだろうあなたがリターン0の代わりに終了関数を使用する必要があり、あなたのプログラムを形成終了するには:あなたは別の条件を必要としたいものを達成するために、 switchブロックとdo whileループとの両方で使用します。 したがって、exit(0)を試してください。あなたを終了することも

#include<cstdlib. h>

+0

'std :: exit'は' process.h'ではなく ''にあります(標準ヘッダではありません)。また、スタックを巻き戻さずにプログラムを終了させ、すべてのリソースをリークします。 – Quentin

+0

私を訂正してくれてありがとうが、私はあなたが言ったすべてのリソースを漏らしているわけではありません –

+0

C++はRAIIを使ってリソースを管理しています。そして、そのリソースを解放するのはデストラクタの役割です。 'std :: exit'は自動変数のデストラクタを呼び出さないので、リソースは決して解放されません。 – Quentin

関連する問題