アプリ版:「スタンプのみでお礼する」機能のリリースについて

 https://oshiete.goo.ne.jp/remark/8916684/9823292 …
 以上補足を文字オーバーで以下に記載しました。
 
ご回答誠にありがとうございました。
#include <stdio.h>
int kansuu();
int main()
{
int modori;
modori = kansuu();
printf("modori=%d\n", modori);
return 0;
}
int kansuu()
{
printf("kansuu de hyouji\n");
return 100;
}
 以上が、参考書の正規のプログラムです。
現在C言語のreturnについて勉強中です。
 理解しないと、気持ち的に参考書を前に進めてたくありません。
 なので早く理解したいと思っているのですが!私的には手ごわいです。
 参考書の最初ぐらいから、いきなり
 説明もなくreturn 0;など白々しく記載があります。
最初のころはreturnを魔法にたとえたら「呪文みたいなものだな」みたいな
考えしかありませんでした、しかい、参考書を進めていくにしたがって、中ほどあたりから
 returnが当たり前みたいに出始めました!
 その後return 0;の説明が1ページしか書いていてありませんでした。
 これで本当に素人は理解できるのかが不思議です。
しかし理解しないとプログラムが理解できない!ヤバイことに気づきました。
 戻り値とreturnの関係って何ぞや 因果関係を勉強しないといけないのかな
以下のアドレスからそれらしきことが書いてあるような気がします。
 http://detail.chiebukuro.yahoo.co.jp/qa/question …
 現在ひまひま勉強中です。

 悪しからず^^

A 回答 (1件)

まずは、main() のなかに書いてある return と、それ以外の関数に書いてある return を分けて考えましょう。


※本来は、同じものなのですが。

main 以外の関数(例の場合では、int kansuu() の中にある、 return 100;)の場合は、比較的わかりやすいと思います。

この関数は、
modori = kansuu();
という形で、呼ばれて、その「結果」が、modori に代入されています。
どの値が代入されるかといえば、関数で実行された、return の次の数字になります。

int kansuu() では、最後に、return 100; が実行されるので、「呼び出された」kansuu() の値は、この、100 になります。

これが、main() 以外の関数に書かれた return の挙動です。

では、main() のなかにある return は何かといえば、これは、わかりにくいと思います。
なぜなら、「main() はどこからも呼び出されない(見かけ上)」からです。

実は、「main() はどこからも呼び出されない」というのが間違いで、おおざっぱに言えば、OSから呼び出されます。
大抵の参考書では、「Cのプログラムは、main() から実行される」と書いてあります。
これは、もう少し詳しくいえば、「OSがmain() という関数を呼び出す(本当は、ちょっと違う)」というわけです。

なので、main() に書かれている return は、(自分を呼び出した)OSに対して、値を返すために使用されます。
OSからの呼び出しなので、明示的には見えませんが、

kekka = main();

のような事になっていると思ってください。

で、OSは、ここで返された値を使うことがあります。(使わないこともあります)

使う場合、「0 なら正常終了、それ以外なら、異常」という判定のために使用する例が多いです。
なので、main() の中にある、return で、0 以外の値を指定すると、(その結果を使うOSなら)「エラーが発生した」という表示をすることが多いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!