※ ChatGPTを利用し、要約された質問です(原文:プログラムがmain関数から始まらない??)
このQ&Aのポイント
C言語初心者ですが、プログラムを実行した際にmain関数から始まらないことに疑問を感じました。
関数a()の条件により、プログラムはa関数から始まることがわかりました。
a関数のreturn文が実行されてもプログラムが終了しない理由が知りたいです。
C言語初心者です。よろしくお願いします。
return文について勉強している途中だったのですが、次のプログラムを実行してみたところ、わからないことが出てきたので質問させていただきました。(ほとんど自分で作ったプログラムではないです)
#include <stdio.h>
/* 関数a()はintを返すと指定 */
int a()
{
if (1) {
/* ここで関数a()は終わります */
printf("yes1\n");
return 300;
}
pritnf("yes2\n");
/* ここは通りません */
printf("this is a()\n");
return 10;
}
int main()
{
int i;
/* 関数a()の返り値を変数iに代入します */
i = a();
printf("i = %d\n", i);
return 0;
}
このプログラムの出力結果は
yes1
i = 300
となるのですが、
1.以前「main関数からプログラムは開始する」というようなことを学習したのですが、このプログラムではyes1が出力されていることからa関数からプログラムが始まっていませんか?
2.a関数のif文の中のreturn 300;でプログラムが終了しないのはなぜですか?
知識のある方、どうか教えてください。
よろしくお願いします。
※ このプログラムを表示させる際、Tabキー及び半角では適度な空白スペースを作ることができなかったので、プログラムを見やすくするための空白スペースは全て全角スペースで作ってあります。(もしかしたら普通に表示させる方法があるのかもしれませんが、わかりませんでした。)
お礼
なるほど。 迅速で大変わかりやすい回答、本当にありがとうございました。 おかげで疑問が解決できました。