質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

403閲覧

javaのmainの戻り値の型はなぜvoidなのか

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/09/24 06:42

C言語のmainの戻り値はintで、これはエラーコード返しています。
一方で、Javaのmainではvoidになっています。C言語から派生したJavaですが、これはJavaの思想なのでしょうか。そうした時、これはどういうスタンスによるものなのでしょうか。(堅牢なシステムではクラッシュしては困るので、そもそもエラーコードを返すような状況は起きるべきでないから?)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

>>javaのmainの戻り値の型はなぜvoidなのか

うちでもミドルウェアやアプリで山ほど
javaを使ったものが常時・随時に稼働しています。

いちいち戻り値見るような作りにするより、
具体的な問題が判ればそれで良いです。

※マジでほんとお願いします。

ミドルウェアやアプリのログと
jstatを突合しても結構大変ですよ。

投稿2020/09/24 13:18

編集2020/09/24 13:22
hana_yama_san

総合スコア923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

main 関数からの返却値が、エラーコードに反映されるようになったのは、
ANSI C89 からです。
main 関数からの返却値があっても、
エラーコードには反映されないのが、C言語のもともとの仕様です。

#include <stdio.h> main() { printf("hello world\n"); }

と、K&R 1st には書いてあります。
(#include <stdio.h> も不要ですが)

もともと、エラーコードは、java と同じように、
exit 関数の引数で指定するのがC言語のスタンスです。

main 関数からの返却値がエラーコードに反映されるのは、
C言語のスタンスというよりは、ANSI のスタンスです。

投稿2020/09/24 11:23

編集2020/09/24 11:33
PingHermit

総合スコア478

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

(堅牢なシステムではクラッシュしては困るので、そもそもエラーコードを返すような状況は起きるべきでないから?)

そんなことはありません。JavaもSystem.exit(n)等でエラーコードを返します。

逆にC言語でreturn 0って必ず書かないといけないのが面倒じゃないですか?
プログラムは基本的に正常終了することを前提に作成されると考えると、不要な処理と言ってもいいかと。

投稿2020/09/24 10:48

szk.

総合スコア1400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2020/09/24 11:26

C言語も、 void main() とすれば、 return 0; なんて不要でなかった?
szk.

2020/09/24 11:56

失礼、勉強不足でした。
guest

0

投稿2020/09/24 06:45

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/09/24 07:04

これは書いた人の想像ですよね? 戻り値を保存しておいてプロセス終了時に返せばいいだけのように思います。 C# はそのような仕組みになっていますし、なんなら C 言語でも main 終了後すぐにプロセスは終了しません。main を呼び出したコードが EXITCODE を設定しています。
y_waiwai

2020/09/24 10:52

そのとおり。 見も知らんどこの誰かもわからん関係ないおっさんの言うことですから、 信じるもどうしようともあなた次第、ということですね。
Zuishin

2020/09/24 11:16

多分これが元ネタだろうなというのをみつけました。 https://stackoverflow.com/questions/540396/why-is-main-in-java-void 中のリンクが切れていますが、同じものをこちらで見ることができます。 https://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.8 「何かスレッドが exit メソッドを呼び出してそれが拒否されなければ終わる」と書いてありますね。 メインスレッド終了後の話というより、「わざわざメインスレッドに処理を渡さなくてもどのスレッドでも終了できる」というニュアンスで書いているように思いました。 なお高評価も低評価もしていません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問