ページ 11

switch文からの抜け出し

Posted: 2018年3月09日(金) 03:50
by donnbee
初めてここで質問させてもらうので不備があったらすいません。
現在、dxlibで作品を作ってるのですがswitch文から抜け出して前のswitch以外の文に戻ることは可能でしょうか・・・
goto文でやってみてもうまくいかずdxlibが終了してしまうだけです。
よろしければだれか教えてください・・・

Re: switch文からの抜け出し

Posted: 2018年3月09日(金) 14:13
by かずま
donnbee さんが書きました:
7年前
初めてここで質問させてもらうので不備があったらすいません。
不備は、「goto文でやってみてうまくいか」ないコードを
示していないことです。
患者が患部を見せずに、医者が正しい診断をするのは難しい
と思いませんか?

switch文から抜け出すには、break 以外に、
goto, return, continue などがあります。

コード:

#include <stdio.h>

void func(int n)
{
    for (int i = 0; i < 1; i++) {
        putchar('\n');
        switch (n) {
        case 1:
            puts("case 1: break;");
            break;
        case 2:
            puts("case 2: goto dest;");
            goto dest;
        case 3:
            puts("case 3: return; // 関数を抜ける");
            return;
        case 4:
            puts("case 4: continue; // for文の i++ に飛ぶ");
            continue;
        }
        puts("  switch文の次の文");
    }
    puts("  for文の次の文");
dest:
    puts("  最後の文");
}

int main(void)
{
    for (int i = 1; i <= 4; i++)
        func(i);
    return 0;
}
実行結果

コード:


case 1: break;
  switch文の次の文
  for文の次の文
  最後の文

case 2: goto dest;
  最後の文

case 3: return;  // 関数を抜ける

case 4: continue; // for文の i++ に飛ぶ
  for文の次の文
  最後の文