
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- UNIX・Linux bash環境でのエラー対応をお願い致します。 1 2022/11/26 17:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
おすすめの美術館・博物館、教えてください!
美術館・博物館が大好きです。みなさんのおすすめをぜひお聞きしたいです。
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
関数から配列を返すには?
C言語・C++・C#
-
C言語で、メモリを解放しないで終わるプログラム
C言語・C++・C#
-
C言語 配列の長さの上限
C言語・C++・C#
-
-
4
C言語初心者の質問失礼します。
C言語・C++・C#
-
5
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
6
バッファとは何ですか
C言語・C++・C#
-
7
C言語での引数の省略方法
C言語・C++・C#
-
8
プログラムについての質問です。 fflush(stdout)はいったいどのような時に使われているので
C言語・C++・C#
-
9
exitとreturnの使い分け
C言語・C++・C#
-
10
NULLの定義について
C言語・C++・C#
-
11
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
12
0除算して、落ちるプログラムと落ちないプログラム
C言語・C++・C#
-
13
e^(x^2)の積分に関して
数学
-
14
unix の exit 1, exit 0について
UNIX・Linux
-
15
C言語のポインターに関する警告
C言語・C++・C#
-
16
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
17
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
18
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
19
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
20
C言語の配列をPush(追加)するには
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
Excel VBA でデータ転記について
-
VB6でのLog
-
コンボボックスの名前を変数に...
-
VBA コンボボックスの値をスピ...
-
long型のランダムな値を返す方法
-
エクセルのマクロについて教え...
-
関数で複数の値を戻り値として...
-
スピンボタンで小数点
-
VB6.0-整数と余りを求める
-
フリーランタイマーの時間差分...
-
配列の値を置換するにはどうす...
-
COLUMN(1:1)の意味を教え...
-
vbsでテキストファイル内の文字...
-
BNFの書き方を教えてください
-
VBAでダブルコーテーション入り...
-
jsp~jspにhiddenを使って変数...
-
HTML5では文中の半角不等号はち...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
Excel-vba 文字列と変数を...
-
VB6.0-整数と余りを求める
-
数字の位ごとの値を表示するプ...
-
VBAで配列のNULL判定
-
C#で動的にコントロールを取得...
-
足して100になるような乱数のア...
-
ラジオボタンの値の取得につい...
-
VBAの定数の使い方で、計算値を...
-
フリーランタイマーの時間差分...
-
DWORDって
-
関数で複数の値を戻り値として...
-
vbaで極大値を抽出する方法
-
4択問題のプログラムでランダム...
-
10進数をアスキーコードに変換
-
コンボボックスの名前を変数に...
-
VBA コンボボックスの値をスピ...
-
1つ前の値を変数に保存する方法
-
バッチファイルで正規表現を使...
おすすめ情報