goto
dan Pernyataan Berlabel (C)
Pernyataan goto
mentransfer kontrol ke label. Label yang diberikan harus berada dalam fungsi yang sama dan hanya dapat muncul sebelum satu pernyataan dalam fungsi yang sama.
Sintaks
statement
:
labeled-statement
jump-statement
jump-statement
:
goto
identifier
;
labeled-statement
:
identifier
:
statement
Label pernyataan hanya bermakna untuk pernyataan goto
; dalam konteks lainnya, pernyataan berlabel dijalankan tanpa memperhatikan label.
jump-statement
Harus berada dalam fungsi yang sama dan hanya dapat muncul sebelum satu pernyataan dalam fungsi yang sama. Sekumpulan identifier
nama berikut memiliki goto
ruang nama sendiri sehingga nama tidak mengganggu pengidentifikasi lain. Label tidak dapat direklarasi ulang. Untuk informasi selengkapnya, lihat Spasi nama.
Ini adalah gaya pemrograman yang baik untuk menggunakan break
pernyataan , continue
, dan return
yang disukai goto
jika memungkinkan. Karena pernyataan break
hanya keluar dari satu tingkat perulangan, goto
mungkin diperlukan untuk keluar dari perulangan di dalam perulangan berlapis.
Contoh ini menunjukkan pernyataan goto
:
// goto.c
#include <stdio.h>
int main()
{
int i, j;
for ( i = 0; i < 10; i++ )
{
printf_s( "Outer loop executing. i = %d\n", i );
for ( j = 0; j < 3; j++ )
{
printf_s( " Inner loop executing. j = %d\n", j );
if ( i == 5 )
goto stop;
}
}
/* This message does not print: */
printf_s( "Loop exited. i = %d\n", i );
stop: printf_s( "Jumped to stop. i = %d\n", i );
}
Dalam contoh ini, pernyataan goto
mentransfer kontrol ke titik berlabel stop
saat i
sama dengan 5.