- ベストアンサー
C言語 関数の戻り値について
C言語で関数を作る場合に最後にreturnで戻り値を設定しますよね? 自分はあまりそれがわかりません。 関数で出た答えを返すって言うのはわかるんですが、 returnが無くても大丈夫だったりreturnはあってもその後に戻り値を設定していなかったり。 何故returnがなくても動作するのでしょうか? 何故returnまであるのに戻り値は設定されていないのか? 教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- マイコン組み込みC言語の戻り値について
例えば、 unsigned char kansuu(){ 文 return = 1 文 } のような戻り値がある関数の場合、return = 1 と書くと、 その関数の最後の } まで飛んで離脱してくれます。 そのことを利用して、戻り値がない関数の場合でも return と書いたら、その関数の最後の } まで飛んで離脱してくれるのでしょうか。 意図としましては、関数内である条件を満たすと、 その関数を離脱するようにしたかったからです。 マイコンはルネサスのr8cです。 そもそも、戻り値がない関数でも場合でも、 return を記述しても良いのでしょうか?
- ベストアンサー
- C・C++・C#
- main関数の戻り値について
c言語において、main関数の戻り値は何を意味しているのですか。 また、void型にすれば、main関数の戻り値を書かなくても問題無いでしょうか。 また、関数はreturn文を書かなくても、最後まで処理を実行すると終了するらしいですが、void型にすれば、main関数でreturn文を書かなくても問題無いでしょうか。
- 締切済み
- C・C++・C#
- C言語 関数の戻り値と自動変数
かなり基礎的な質問になるのですが、疑問に思うことがあり、質問をさせていただきます。 関数内で宣言した変数を戻り値として使う場合ですが、ポインタなどではなく実体の場合でも、静的変数として宣言をしたほうが良いのでしょうか? 現実的に考えると、プログラムが関数から出て、呼び出した側の関数が戻り値を受け取るまでの瞬間に、その領域が書き換えられる可能性は極めて低いと思うのですけど、C言語の仕様としてはどうなのでしょうか? 関数内で宣言した戻り値に使う変数には、必ずstaticをつけた方が良いのでしょうか? もしおわかりでしたら教えて下さい。
- ベストアンサー
- C・C++・C#
- C言語の関数を分かりやすく説明してください。
C言語を学習しています。 C言語の入門書を読んでいて、どうしても関数のこと(引数とか戻り値とか自作関数についてのこと)が分かりませんでした。ネットで調べてみたりもしたのですが分かりませんでした。 かみ砕いて説明していただけるとありがたいです。
- ベストアンサー
- C・C++・C#
- 戻り値について
ただ今、c言語の勉強をしている者です。 本を読んでいて分からないところがあったので ご指導して頂ければと書き込みました。 それは、最初と最後のところです。 int main(void) { ・ ・ 処理 ・ ・ return 0; >int main(void) このintというのは 戻り値が整数だと言うことだと思うのですが 戻り値が文字の場合ということも あるということですか? 例えば、 char main(void) ということもあるのでしょうか? また、voidというのは 他の名前にしたらいけないのでしょうか? > return 0; というのは、 正常に終わったら戻り値を0にしろということですか? ご指導して頂ければと思います
- ベストアンサー
- C・C++・C#
- 関数の戻り値による変数の初期化
関数の戻り値で変数を初期化すると、予期せぬ動作をする可能性があると聞いたのですが、実際にそのようなことがあるのでしょうか? また、予期せぬ動作をする場合、そのような現象が起きる環境と原因は何なのでしょうか? 使用している言語はC++なので、例えば下のような動作です。 int a = f(); ・対象の関数が標準関数かどうかは不明です。 ・変数はローカルを想定しています。 ちなみに私は、C,C++を2,3年勉強しており、会社での実践経歴が1年程度です。
- ベストアンサー
- C・C++・C#
- C言語全体の考え方が不明です
今日は、Cの初心者です、宜しくお願いします。 Cプログラムの「int main(){・・・・return 0;}」 とはどのような意味でしょうか。 これはプログラム全体をひとつの関数(サブルーチン、サブプログラム)と考えているのでしょうか。 また、この「return 0;」をコメントにしても特にエラーは出さないのですが(警告は出てるかも)。 このC言語全体の考え方とはどのようなものでしょうか。 戻り値をとる場合も当然あるのでしょうか。 他の言語から入った者には、何か言語全体のスタンスというか、位置づけみたいなものが非常に分かりにくいです。 宜しくお願いします。 ==================================================== int main() { printf("hello\n"); // return 0; }
- ベストアンサー
- C・C++・C#
- c言語の関数定義について
次の関数定義を考える. int f(int x) {if (x > 0) {return x * f(x-1);} else {return 1;} } この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ.ただし,オーバーフロー(overflow) については考慮しなくてよい. ”この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ”って理解できません、どのように定義したいいか、ご教授お願いします。
- ベストアンサー
- C・C++・C#
- main関数の戻り値
C言語のmain関数の戻り値はint型ですよね。 私もそういう決まりだと思って守ってきました。 しかし、「mainが戻り値を返すって、どこに返すの?」ということが、私は理解できていません。 私が調べたところでは、「ホスト実行環境」という言葉がこの問題に関係あるようですが、この言葉の意味はよくわからないですし、似た言葉で「ホスト環境」ということばがあるのですが意味も関係もわかりません。 これらは、OSとは違うと思うんですが、自信はありません。 それでも、ない知識を振り絞っていろいろ考えてみると、次のようなことらしいのですが、正しいでしょうか。 ・OSはプログラムの実行に先立ちホスト実行環境を作る。 ・静的記憶域のオブジェクトを初期化するのはホスト実行環境である。 ・関数が、main関数を呼ぶことは可能である。(以下では、main関数が関数から呼ばれる場合は除く。) ・main関数を呼ぶのは、ホスト実行環境が行なう。 ・main関数の中のreturnによってプログラムが終了するのと、exit関数でプログラムが終了することに違いはない。 ・main関数の戻り値は、ホスト実行環境に返される。 ・returnによってホスト実行環境に返される値は、int型である限りなんでもよい。 ・exitによってホスト実行環境に返される値は、int型である限りなんでもよい。 ・必ずexitで値が返されるならば、main関数の中にreturnはなくてもよい。 main関数からの戻り値をどうしようと構わないんだと思うんですが、皆さんの経験の中で、実例としてこういうふうに使われる、というのは何かないのでしょうか。 (ホスト実行環境に値が返される、といっても無視するのでは意味はないと思うのです。 その値の使用例としては、 0が返ってくると「プログラムは正常終了しました。」と表示するとか、0以外の値が返されると別のプログラムが走るとか、 そういうことだと思うんですが。)
- ベストアンサー
- C・C++・C#
- C言語でmain関数でのreturnとexit
C言語でmain関数でのreturnとexitは同等とされてますが、 それは『プログラムを呼び出した元の動作』も同じですか? 例えばshellやOSから見て、割り当てメモリ開放などの点で returnで終了したプログラムの後処理と exitで終了したプログラムの後処理は 全く同じになりますか?
- ベストアンサー
- C・C++・C#