ページ 11

関数からの抜け出し方

Posted: 2006年10月05日(木) 01:32
by ナガタ
以下のような構造の関数があったときに,関数C内の[1]である条件が満たされたときに[2]に飛ぶようにしたいときはどのようにしたらいいのでしょうか?
C言語ではgotoはあまり使わないようにした方がいいというのを聞いたことあるんですけど,
gotoを使わずにこのようないくつかの関数から抜け出すにはどのようにするのが普通なんでしょうか?

***************************
A関数
{
  :
  関数B
  [2]
  :
}

関数B
{
  関数C
}

関数C
{
  [1]
}
***************************

Re:関数からの抜け出し方

Posted: 2006年10月05日(木) 02:36
by Justy
 こんばんわ。

 とりあえず、関数Cに戻り値を設けて、関数Bでその関数Cの戻り値をチェックするというのはどうでしょう。

 つまり、関数Cで [1] の条件が満たされたら1、満たされなかったら0を関数Cが返すようにして、呼び出し元の関数Bはその戻り値をチェックし、1ならそのまま returnして、関数Aに戻る、と。

Re:関数からの抜け出し方

Posted: 2006年10月05日(木) 11:27
by ナガタ
Justyさんこんにちは.回答ありがとうございます.
下のような感じにすればいいんですかねー?
***************************
A関数
{
  :
  関数B
  [2]
  :
}

関数B
{
  if(関数C == 1)
    return 1;
  :
  return 0
}

関数C
{
  if(・・・) //[1]
    return 1
:
  return 0
}
***************************

Re:関数からの抜け出し方

Posted: 2006年10月05日(木) 13:33
by keichan
そんな感じでいいと思います。

Re:関数からの抜け出し方

Posted: 2006年10月05日(木) 14:22
by ナガタ
ありがとうございます.
上のような感じでプログラムを変えたら,自分の思う動作をしてくれました.

Re:関数からの抜け出し方

Posted: 2006年10月06日(金) 02:45
by 管理人
Justyさん、keichanさん、回答ありがとうございます^^
不在の間ご迷惑をおかけしました><;

こんなに時間がかかるとは思いませんでした^^;
解決されたようでよかったです^^