• ベストアンサー

プログラム言語

プログラムで質問です。 言語は何でもいいのですが、引数と戻り値を同時に設定することはできますか?(同じ関数内で)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

まだ、わからない(おそらく他の人にもわからない) 帰り値が宣言済み?ってのがまず誰にも理解できません。 帰るのは「値」のみで、変数は実体を失うので、 事実上、「値だけがあればいい」わけなので。 const int RETURN=123; int main(............) { return RETURN; } と、コードとして無意味になる気がします。 そもそも、帰り値が宣言済みなら、 呼ぶ意味はないのではないかと。 もう少しかみ砕いて何がしたいのかがあれば、 良い回答が付くかもしれないのですが。

dhtfyjh
質問者

お礼

画像が添付できなかったので立て直します。

dhtfyjh
質問者

補足

ありがとうございます。 参考書の関数と戻り値のところを見ていると int main(int x=4,int y=5)←(引数だと思っている物) { 処理内容 return it;(itは変数内容(宣言済み))←(返り値だと思っている物) } 両方ともint main()に格納されているのかな?と思ってしまいました。 

その他の回答 (4)

回答No.4

「引数と戻り値を同時に設定」 の意味が よくわからないけど、 関数内で、その関数の引数となっている変数を参照渡しで戻して 同時に返り値にもその変数を使えるかって意味かな。 C言語だと int func1(int *a) {  *a = 3;  rerurn *a; } みたいに。 それなら可能です。

dhtfyjh
質問者

補足

すみません。 Cの場合。 int main(int x=4,int y=b)←(引数だと思っている物) { 処理内容 return it;(itは変数内容(宣言済み))←(返り値だと思っている物) } このようなもののことです。 returnは0,1以外でお願いします。 引数と返り値は全く違うものです。

回答No.3

引数は設定できますが、戻り値は無理じゃないでしょうか? 「戻り値とは、プログラム中で呼び出された関数やメソッド、サブルーチンなどが処理を終了する際に、呼び出し元に対して渡す値。」とされいています。 つまり計算した結果です、結果を設定できるか?、結果を設定するということは、すでに決まっているという事になります=計算する必要性は無いと思いますが?。 もう少し、解釈を柔らかくして考えて引数を渡すと同時に戻り値がでるか?と考えても、引数を渡した後に演算を行いますから戻り値は必ず遅延します、同時には物理的に無理です(引数を渡すだけでも数クロック時間がかかります 入力と同時に計算ができるなら、スパコンを遥かに超えた計算機になるでしょう(スパコンで100年かかる計算も一瞬(入力と同時)にできることになる)。

dhtfyjh
質問者

補足

すみません。 Cの場合。 int main(int x=4,int y=b)←(引数だと思っている物) { 処理内容 return it;(itは変数内容(宣言済み))←(返り値だと思っている物) } このようなもののことです。 returnは0,1以外でお願いします。

  • f272
  • ベストアンサー率46% (8532/18263)
回答No.2

どんなことをやりたいのかよくわからないが,こういうこと? program p1 a=1 call func(a) print *,a end program p1 subroutine func(a) a=2 end subroutine func

dhtfyjh
質問者

補足

すみません。 Cの場合。 int main(int x=4,int y=b)←(引数だと思っている物) { 処理内容 return it;(itは変数内容(宣言済み))←(返り値だと思っている物) } このようなもののことです。 returnは0,1以外でお願いします。

回答No.1

? 「引数と戻り値を同時に設定する」 例えば、1+3が引数で、答えである4が戻りですが。 計算前に答えを求めてる?ってこと? とりあえず、 >言語は何でもいい とのことなので。 Cで回答してみます。 struct hoge { int a; int b; int c; }; void func(struct hoge *p) { p->c = p->a + p->b; } これで、帰り値はvoid(ない)ですが、 a+bの答えである帰り値は、引数そのものである、hoge *p内のメンバーcに格納されます。 なので、質問の 「引数と戻り値を同時に設定」を満たしていると 仮定できます。 この考え方は、他の言語にもあり、Cではポインタと呼ばれ 他の言語では、値渡しや参照渡しとも呼ばれています。

dhtfyjh
質問者

補足

すみません。 Cの場合。 int main(int x=4,int y=b)←(引数だと思っている物) { 処理内容 return it;(itは変数内容(宣言済み))←(返り値だと思っている物) } このようなもののことです。 returnは0,1以外でお願いします。

関連するQ&A

専門家に質問してみよう