Bagikan melalui


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 breakpernyataan , 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.

Lihat juga

Pernyataan