C/C++ 言語のループ ステートメントでは、exit(0)、exit(1)、またはその他の値を使用します。その値には何が必要で、ループを終了するときのループ内でのその値の役割は何ですか? exit() の 1 と 0 の意味は何ですか?
9 に答える
exit() は、ループではなくプロセスを終了します。引数については、終了ステータス (0、EXIT_SUCCESS、EXIT_FAILURE) です: http://www.opengroup.org/onlinepubs/000095399/functions/exit.html
提案 : 質問する前に、関数または言語機能のドキュメントを検索して読む必要があります。
ループを終了するために exit() を使用しません。exit はプログラム全体を終了します。
exit 関数に指定する番号は、プログラムの終了コードになります。
通常、終了値 0 は、プログラムが正常に終了したことを示します。
ゼロ以外の値は通常、プログラムのエラー識別子であり、それを示すために使用されます。
- プログラムは失敗しました
- 番号は通常、失敗した理由を示します
言語ループを終了するための一般的なステートメントはbreak
、continue
、goto
、return
、throw
およびexit
です。ループを終了できる関数は他にもありますが、自分で調べることができます。
break
ステートメントは、最も近いループを終了します。ループの終了後に実行が再開されます。
このcontinue
ステートメントにより、ループの先頭から実行が開始されます。以降のステートメントcontinue
は実行されません。これは、あなたのペダンティクスに応じて、ループを終了する場合としない場合があります。
このgoto
ステートメントは、ループを終了するために使用できます。ループの外側にラベルを配置し、 を使用しますgoto
。
return
ステートメントは関数を終了します。関数が の場合main
、プログラムを終了します。
throw
ステートメントはループと現在の関数を終了します。関連するステートメントが見つからない場合は、最も近いステートメントで実行が再開されるcatch
か、プログラムが終了します。catch
関数はexit
ループを終了し、プログラムを終了します。に渡された値はexit
、プログラムの終了後にオペレーティング システムに渡されます。一部の OS では、プログラムの戻り値をスクリプトで使用できます。の 0 と 1 の値exit
は OS に依存します。成功した終了を示すために 0 を使用するものもあります。他の値は、終了の理由を示す場合があります。
ループを終了する他の方法。未定義の動作の実装に依存するものもあります。
- ループの終了条件を満たします。
- ゼロで割ります。
- null ポインターを逆参照します。
- 負の数の平方根。
- 終端の NUL 文字なしで C 文字列の長さを計算します。
質問を明確にすると、より良い答えが得られます。
うーん...いいえ、これはひどく間違っています。
Cish では、exit
プログラム全体を終了します。ループを止めたいだけなら、 を使用しますbreak
。現在のループの反復を停止して次の反復に進みたい場合は、 を使用しますcontinue
。
に提供されexit
た値は、プログラム全体の終了値として返されます ( return
main からその値を編集したように)。OS がその値で何をするかは、OS 次第です。OS によっては、さまざまなユーティリティのエラーとして 0 以外を定義するものもありますが、それが何を意味するかは多かれ少なかれあなた次第です。
冗長に聞こえるかもしれませんが、これはプロセスの終了コードです。通常、成功または失敗のさまざまな程度を示す値の範囲を定義できます。伝統的に、0 は成功、1 (またはゼロ以外) は失敗です。次に、呼び出したプログラムまたは関数は、値を調べて (その傾向がある場合)、その値から、プロセスが成功したかどうかについてのアイデアを収集できます。
たとえば、場所 A から B にファイルをコピーするプログラムがあるとします。場所 B が書き込み保護されているためにファイルをコピーできない場合は、-1 を返すことができ、その場所をステップとして使用する他のプログラムはすべて返すことができます。その過程で、あなたが失敗したことがわかり、場所 B のファイルが完全でアクセス可能であると期待するのは悪い考えであることがわかります。
exit() 関数を使用する場合、ループに入っているかどうかは気にしません。プログラムを終了し、指定された整数を戻り値として返します。
C/C++ にはループ戻り値などはありません。
この値は、外部プログラムがそれを使用して、プログラムが正常に実行されたかどうかを判断する場合にのみ重要です。通常、正常に実行されたプログラムは 0 以上を返し、失敗した場合は -1 を返します。
ヒステリックな...申し訳ありませんが、歴史的な...理由で。
Unix の時代に戻り、Linux や Windows などでは、プログラムは単独で実行されるだけでなく、どこか (別のプログラム、シェル (bash など、dos プロンプトなど)) から呼び出され、必要になる場合があります。それが成功したかどうかを知るために...
あなたは混乱return(x)
しているかもしれませんexit(x)
. return
呼び出し元の関数に情報を送り返し、exit
プロセス全体をシャットダウンし、プロセスを開始した環境 (存在する場合) に終了ステータスを与えます。C の関数から返される値は多くの場合エラー値ですが、その意味はプロセスのセマンティクスによって異なります。の意味exit
は、環境のセマンティクスに依存します。
船のようなものだと考えてください。return
直属の上司へのメッセージのようなもので、今日デッキを掃除できなかった理由と、プロジェクトが中止された理由を示している可能性があります。exit
船が沈んだ理由と方法を説明するためにボトルに詰められたメッセージです。