goto文とは
goto文は指定した位置まで実行位置を移動する命令です。
ただし、別の関数には飛べません。
一見便利なように思えますが、この命令は最近のパラダイムでは使用は推奨されません。
構造化プログラミングにおいてはプログラムの構造を、順次、分岐、反復の3種類の形で表現する(出来る)という考え方があります。
これに乗っ取ると、ソースコード上のあらゆる位置に制限なく移動できるgo to文を使用するということは、構造化プログラミングの理念に反してコードを複雑化するからです。
ですが、絶対に使わないということもありません。
goto文を使ったほうがわかりやすいという場面もあるでしょう。複雑なコードを書くときはgoto文を思い出してみるのも良いでしょう。
使い方
【ラベル名】:
で設定した位置に
goto 【ラベル名】
でジャンプします。
ラベル名の設定は;(セミコロン)ではなく:(コロン)なので間違えないようにしましょう。
以下はgoto文を用いた反復処理の例文です。
aが10より大きければlabel1でループし、10以下ならlabel2に飛んでループから脱出します。
goto_sample.c
#include <stdio.h>
int main(void)
{
int a = 0;
label1:
printf("%d\n", a);
if (a >= 10)
goto label2;
a++;
goto label1;
label2:
return 0;
}