goto
a popisky příkazů (C)
Příkaz goto
přenese řízení na popisek. Daný popisek se musí nacházet ve stejné funkci a může se zobrazit před pouze jedním příkazem ve stejné funkci.
Syntaxe
statement
:
labeled-statement
jump-statement
jump-statement
:
goto
identifier
;
labeled-statement
:
identifier
:
statement
Popisek příkazu je smysluplný pouze pro goto
příkaz. V jakémkoli jiném kontextu se příkaz s popiskem spustí bez ohledu na popisek.
Musí jump-statement
být umístěn ve stejné funkci a může se zobrazit před pouze jedním příkazem ve stejné funkci. Sada identifier
názvů, které následují, goto
má vlastní prostor pro názvy, takže názvy nekorušují s jinými identifikátory. Popisky nelze předefinovat. Další informace najdete v tématu Mezery názvů.
Je to dobrý programovací styl používat break
, continue
a return
příkaz v předvolbách, goto
kdykoli je to možné. Vzhledem k tomu, že příkaz break
se ukončí pouze z jedné úrovně smyčky, goto
může být nezbytné pro ukončení smyčky z hluboko vnořené smyčky.
Tento příklad ukazuje goto
příkaz:
// 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 );
}
V tomto příkladu goto
příkaz přenese řízení na bod označený stop
, když i
se rovná 5.