私はいくつかの再帰的な関数を使ってコーディングしている間、いくつかの問題を抱えることに疑問を抱いています。今ここでは、ネストされた関数呼び出しで簡単なコードを与えているので、私の正確な問題を指摘することができます。どのようにreturn文がネストされた関数呼び出しで処理されますか?
int main(void)
{
int i;
i=a();
printf("%d\n",i);
return 0;
}
int a()
{
return b();
}
int b()
{
return 9;
}
も、全く問題は、それがとして出力を与えません。私のように機能a()
を再定義した場合でも:
int a()
{
b();
int new=0; //not significant
}
私はreturn
私はコンパイルエラーを取得していなかったキーワード、どちらの値を削除しても再びそれが、ここに
9
を有効な出力、.IEを生成します出力のi
が間違っていた...(私はゴミなどを期待していた)。 これらのものはどのように処理されますか?
重複する質問ではありません。私の問題は、他の戻り値の型の問合せや問題とは若干異なります。 – RahulCoffee
@RCoffee:申し訳ありませんが、選択した複製は、修正されたコードを正確に反映しています。動作は未定義です。結果はOKで、あなたの肩をすくめて "ああ"と言う以外の結果を説明する方法はありません。 –
あなたが指摘したことは非常に論理的であるため、私はあなたのans @ CodeBatmanを受け入れています。しかし、私はgcc(私はFedoraを使用しています)とdev C++を試してみました。どちらも関数b()から返ってきたものを出力しています。 – RahulCoffee