関数からの抜け出し方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ナガタ

関数からの抜け出し方

#1

投稿記事 by ナガタ » 17年前

以下のような構造の関数があったときに,関数C内の[1]である条件が満たされたときに[2]に飛ぶようにしたいときはどのようにしたらいいのでしょうか?
C言語ではgotoはあまり使わないようにした方がいいというのを聞いたことあるんですけど,
gotoを使わずにこのようないくつかの関数から抜け出すにはどのようにするのが普通なんでしょうか?

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

関数B
{
  関数C
}

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

Justy

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

#2

投稿記事 by Justy » 17年前

 こんばんわ。

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

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

ナガタ

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

#3

投稿記事 by ナガタ » 17年前

Justyさんこんにちは.回答ありがとうございます.
下のような感じにすればいいんですかねー?
***************************
A関数
{
  :
  関数B
  [2]
  :
}

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

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

keichan

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

#4

投稿記事 by keichan » 17年前

そんな感じでいいと思います。

ナガタ

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

#5

投稿記事 by ナガタ » 17年前

ありがとうございます.
上のような感じでプログラムを変えたら,自分の思う動作をしてくれました.

管理人

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

#6

投稿記事 by 管理人 » 17年前

Justyさん、keichanさん、回答ありがとうございます^^
不在の間ご迷惑をおかけしました><;

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

閉鎖

“C言語何でも質問掲示板” へ戻る