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; }