
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
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
5
C言語での引数の省略方法
C言語・C++・C#
-
6
0除算して、落ちるプログラムと落ちないプログラム
C言語・C++・C#
-
7
unix の exit 1, exit 0について
UNIX・Linux
-
8
複数の変数を宣言する時、同時に初期化?できないでしょうか?
Java
-
9
C言語の配列をPush(追加)するには
C言語・C++・C#
-
10
フローチャートで。
C言語・C++・C#
-
11
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
12
acceptをalarmでタイムアウトさせる処理がうまくいきません
C言語・C++・C#
-
13
プログラムでの数字につく”f”の意味
C言語・C++・C#
-
14
e^(x^2)の積分に関して
数学
-
15
C言語を実行すると-infが出てきて困っています。
C言語・C++・C#
-
16
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
17
ファイル名を変数で書きこむfwriteの仕方
C言語・C++・C#
-
18
C言語初心者の質問失礼します。
C言語・C++・C#
-
19
cout と cerrの違い
C言語・C++・C#
-
20
改行までの一文字ずつのファイル読み込み
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel-vba 文字列と変数を...
-
C言語 exitの使い方
-
フリーランタイマーの時間差分...
-
ラジオボタンの値の取得につい...
-
VBAで配列のNULL判定
-
フォームを開くときに、コンボ...
-
C#.netでの切り上げ処理について
-
数字の位ごとの値を表示するプ...
-
クッキーCookieで、値のサイズ...
-
3bitアップダウンカウンタ(Up/...
-
配列の値を置換するにはどうす...
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
整数xxxが大き過ぎますというエ...
-
Windows11のカメラで動画を撮り...
-
c言語でランタイムエラーの処理...
-
異なる文字列のマッチングを、D...
-
VisualStudio2022でC言語プログ...
-
関数呼び出しについて
-
ループを違う条件で抜けるよう...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 exitの使い方
-
Excel-vba 文字列と変数を...
-
フォームを開くときに、コンボ...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
足して100になるような乱数のア...
-
ラジオボタンの値の取得につい...
-
C#で動的にコントロールを取得...
-
VBAで配列のNULL判定
-
データ構造のmapとは?
-
関数で複数の値を戻り値として...
-
世界のナベアツ
-
VBA コンボボックスの値をスピ...
-
VBAの定数の使い方で、計算値を...
-
スピンボタンで小数点
-
1つ前の値を変数に保存する方法
-
Nullってどういう意味ですか?
-
コンボボックスの名前を変数に...
-
DWORDって
-
vbaで極大値を抽出する方法
おすすめ情報