
No.3ベストアンサー
- 回答日時:
慣用的に、
正常終了ならexit(0);
異常終了ならexit(1);
としています。
exit(x);とreturn x;
は、同じ意味となります。
(C言語の規格で、main()からreturnする終了は、
exitの終了と同等となっている)
正常終了ならexit(0);もしくはreturn 0;は意見が分かれないと思います。
問題は、異常終了の時1とするか-1とするかですが、
これはどっちでもいいです。
気になるなら、stdlib.hで定義されているEXIT_FAILUREマクロを使って、
exit(EXIT_FAILURE);
とすればいいでしょう。
エラーの種類によって値を変えてもいいし。
ところで、exit(0);とexit(1);の違いですが、
Windowsの場合、実はあまり意味がありません。
この値は、バッチファイルの中でエラーレベルとして
取得されます(詳細は略)。
昔のプログラムの中には、
エラーレベルの値によってバッチファイルに情報を伝えるというものがありました。
しかし現在はバッチファイルの使用は少なくなってきており、
終了時に0を指定使用が1を指定しようが、
その値を利用されることがほとんどありません。
ただ、なんとなく、正常終了ならエラーレベル0、以上ならそれ以外、としています。
UNIXやLinuxで、コンソールで動くツールならば、
利用される場面はあります。
(「終了ステータス」として、シェル(.shや.csh)の中で使えます)
詳しいご解答をありがとうございます!
今までは-1を使うものだと思っていましたが、
今回いろいろ教えていただいて、私の根本的な考え方の間違いがあったことがわかりました。
正しく理解できて嬉しく思っています!
本当にありがとうございました!またいろいろ調べてみます。
No.2
- 回答日時:
> return 0 は正常終了。
return -1は異常終了と覚えているのですが「main()のreturn」と「exit()」の話って理解で話を続けます。
一般的にプログラムの終了は
1.正常の終わった
2.正常ではないが終わった
3.死んだ/殺された
の3種です。
3はOS(または、OSに近いシステムソフトウェア)が直接関与するのでちょっと違う次元の話。
問題は1と2の違いをOS(または、OSに近いシステムソフトウェア)に伝える方法です。
普通「正常」という状態は一種類しかありません(すべてがオッケー)。
しかし、「正常でない」という状態は無数にあります。
よって、「正常=0、0でない時は何らかの異常」という使い方になります。
> return -1
終了ステータスに負の値を設定したときに、OS(または、OSに近いシステムソフトウェア)が符号をちゃんと認識するかどうか?
処理系依存なので、OSの指定がない限り正の整数を使ったほうが安全だと思います。
詳しいご解答ありがとうございます!
returnの返す値は自分で指定できるんですね^^;
認識なども全然知らなかったので、とても勉強になりました!
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
C言語 配列の長さの上限
C言語・C++・C#
-
C言語のポインターに関する警告
C言語・C++・C#
-
関数から配列を返すには?
C言語・C++・C#
-
4
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
5
e^(x^2)の積分に関して
数学
-
6
C言語でmain関数でのreturnとexit
C言語・C++・C#
-
7
エラーの意味は? Lvalue required
C言語・C++・C#
-
8
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
9
fgets( ) の返り値は何?
C言語・C++・C#
-
10
ファイル出力で改行を入れたい!
C言語・C++・C#
-
11
C言語 ファイルの指定された行を表示
C言語・C++・C#
-
12
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
13
変数の前のビックリマークについて!
PHP
-
14
課題でつまってます・・・
C言語・C++・C#
-
15
バッファとは何ですか
C言語・C++・C#
-
16
char型にint型の数値を代入する。
C言語・C++・C#
-
17
exitとreturnの使い分け
C言語・C++・C#
-
18
char str[256]の256の意味は?
C言語・C++・C#
-
19
構造体の中の構造体
C言語・C++・C#
-
20
複数桁10進数の*桁目だけを抽出したい
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
フォームを開くときに、コンボ...
-
5
数字の位ごとの値を表示するプ...
-
6
足して100になるような乱数のア...
-
7
C言語 exitの使い方
-
8
プラスの乱数の合計とマイナス...
-
9
1つ前の値を変数に保存する方法
-
10
フリーランタイマーの時間差分...
-
11
VBA GetAttrについて教えてくだ...
-
12
if文が機能しません
-
13
C#で動的にコントロールを取得...
-
14
C言語のwhileを含む関数について
-
15
Exit Subのような・・・。
-
16
long型のランダムな値を返す方法
-
17
Xorshiftの値を絞り込む方法を...
-
18
セルの値を使って、閉じている...
-
19
データ構造のmapとは?
-
20
VBAの定数の使い方で、計算値を...
おすすめ情報
公式facebook
公式twitter