goto文
禁じられた条件文
これまで学習した制御文以外に、例外的な制御文があります
同じ関数内の指定位置に自由に移動する無条件分岐が可能になります
BASIC 言語ではおなじみのgotoステートメントがそれです
しかし、C言語ではgotoは使ってはいけないという暗黙のお約束があります
便利そうなgotoステートメントですが、多用するとプログラムに一貫性がなくなり
プログラムの流れが不定になり、構造が崩れます(俗にスパゲティソースといわれます)
goto ラベル名;
ここでは学習用にgotoステートメントを取り上げます
しかし、C/C++プログラムでは例外を除いてgotoは使用しません
また、gotoを使用しなければ作れないプログラムというのは存在しません
gotoは熟練したCプログラマが用途に応じて判断し、使用するものだと思ってください
#include <stdio.h>
int main()
{
int count = 0;
loop:
printf("強制的に繰り返します\n");
count++;
if (count >= 10) goto end;
goto loop;
end:
printf("プログラムを終了します");
return 0;
}
goto命令は別関数への移動はできません
goto命令は指定されたラベル名の行に強制的に移動します
ラベルは変数や関数名同様に名前を付けて、名前のあとにコロン 「 : 」をつけます
どうしてもプログラムがネストから抜け出せなくなったり
ユーザーの操作でエラーが発生したときの例外処理などで用いられます
goto name
指定ラベルへ強制的に移動します
name ラベル名を指定します