0

C/C++ 言語のループ ステートメントでは、exit(0)、exit(1)、またはその他の値を使用します。その値には何が必要で、ループを終了するときのループ内でのその値の役割は何ですか? exit() の 1 と 0 の意味は何ですか?

4

9 に答える 9

9

exit() は、ループではなくプロセスを終了します。引数については、終了ステータス (0、EXIT_SUCCESS、EXIT_FAILURE) です: http://www.opengroup.org/onlinepubs/000095399/functions/exit.html

提案 : 質問する前に、関数または言語機能のドキュメントを検索して読む必要があります。

于 2010-02-12T14:22:18.320 に答える
4

ループを終了するために exit() を使用しません。exit はプログラム全体を終了します。

exit 関数に指定する番号は、プログラムの終了コードになります。

通常、終了値 0 は、プログラムが正常に終了したことを示します。

ゼロ以外の値は通常、プログラムのエラー識別子であり、それを示すために使用されます。

  1. プログラムは失敗しました
  2. 番号は通常、失敗した理由を示します
于 2010-02-12T14:24:02.887 に答える
1

言語ループを終了するための一般的なステートメントはbreakcontinuegotoreturnthrowおよびexitです。ループを終了できる関数は他にもありますが、自分で調べることができます。

breakステートメントは、最も近いループを終了します。ループの終了後に実行が再開されます。

このcontinueステートメントにより、ループの先頭から実行が開始されます。以降のステートメントcontinueは実行されません。これは、あなたのペダンティクスに応じて、ループを終了する場合としない場合があります。

このgotoステートメントは、ループを終了するために使用できます。ループの外側にラベルを配置し、 を使用しますgoto

returnステートメントは関数を終了します。関数が の場合main、プログラムを終了します。

throwステートメントはループと現在の関数を終了します。関連するステートメントが見つからない場合は、最も近いステートメントで実行が再開されるcatchか、プログラムが終了します。catch

関数はexitループを終了し、プログラムを終了します。に渡された値はexit、プログラムの終了後にオペレーティング システムに渡されます。一部の OS では、プログラムの戻り値をスクリプトで使用できます。の 0 と 1 の値exitは OS に依存します。成功した終了を示すために 0 を使用するものもあります。他の値は、終了の理由を示す場合があります。

ループを終了する他の方法。未定義の動作の実装に依存するものもあります。

  1. ループの終了条件を満たします。
  2. ゼロで割ります。
  3. null ポインターを逆参照します。
  4. 負の数の平方根。
  5. 終端の NUL 文字なしで C 文字列の長さを計算します。

質問を明確にすると、より良い答えが得られます。

于 2010-02-12T17:30:02.243 に答える
1

うーん...いいえ、これはひどく間違っています。

Cish では、exitプログラム全体を終了します。ループを止めたいだけなら、 を使用しますbreak。現在のループの反復を停止して次の反復に進みたい場合は、 を使用しますcontinue

に提供されexitた値は、プログラム全体の終了値として返されます ( returnmain からその値を編集したように)。OS がその値で何をするかは、OS 次第です。OS によっては、さまざまなユーティリティのエラーとして 0 以外を定義するものもありますが、それが何を意味するかは多かれ少なかれあなた次第です。

于 2010-02-12T15:37:25.273 に答える
0

冗長に聞こえるかもしれませんが、これはプロセスの終了コードです。通常、成功または失敗のさまざまな程度を示す値の範囲を定義できます。伝統的に、0 は成功、1 (またはゼロ以外) は失敗です。次に、呼び出したプログラムまたは関数は、値を調べて (その傾向がある場合)、その値から、プロセスが成功したかどうかについてのアイデアを収集できます。

たとえば、場所 A から B にファイルをコピーするプログラムがあるとします。場所 B が書き込み保護されているためにファイルをコピーできない場合は、-1 を返すことができ、その場所をステップとして使用する他のプログラムはすべて返すことができます。その過程で、あなたが失敗したことがわかり、場所 B のファイルが完全でアクセス可能であると期待するのは悪い考えであることがわかります。

于 2010-02-12T14:22:43.967 に答える
0

exit() 関数を使用する場合、ループに入っているかどうかは気にしません。プログラムを終了し、指定された整数を戻り値として返します。

C/C++ にはループ戻り値などはありません。

于 2010-02-12T14:23:08.073 に答える
0

この値は、外部プログラムがそれを使用して、プログラムが正常に実行されたかどうかを判断する場合にのみ重要です。通常、正常に実行されたプログラムは 0 以上を返し、失敗した場合は -1 を返します。

于 2010-02-12T14:23:22.607 に答える
0

ヒステリックな...申し訳ありませんが、歴史的な...理由で。

Unix の時代に戻り、Linux や Windows などでは、プログラムは単独で実行されるだけでなく、どこか (別のプログラム、シェル (bash など、dos プロンプトなど)) から呼び出され、必要になる場合があります。それが成功したかどうかを知るために...

于 2010-02-12T14:24:40.217 に答える
0

あなたは混乱return(x)しているかもしれませんexit(x). return呼び出し元の関数に情報を送り返し、exitプロセス全体をシャットダウンし、プロセスを開始した環境 (存在する場合) に終了ステータスを与えます。C の関数から返される値は多くの場合エラー値ですが、その意味はプロセスのセマンティクスによって異なります。の意味exitは、環境のセマンティクスに依存します。

船のようなものだと考えてください。return直属の上司へのメッセージのようなもので、今日デッキを掃除できなかった理由と、プロジェクトが中止された理由を示している可能性があります。exit船が沈んだ理由と方法を説明するためにボトルに詰められたメッセージです。

于 2010-02-12T15:49:48.613 に答える