Příkaz goto a příkazy s popiskem (C)
Příkaz goto předává řízení popisku.Daný popisek musí být umístěn do stejné funkce a může se vyskytovat pouze před jedním výrazem v dané funkci.
Syntax
statement:
labeled-statementjump-statement
příkaz jump:
goto identifier ;labeled-statement:
identifier : statement
Popisek příkazu má význam pouze pro příkaz goto. Ve všech ostatních kontextech je příkaz s popiskem spuštěn bez ohledu na popisek.
Příkaz jump-statement musí být umístěn do stejné funkce a může se vyskytovat pouze před jedním výrazem v dané funkci.Sada názvů identifier následovaná příkazem goto má svůj vlastní obor názvů, díky čemuž názvy nenarušují jiné identifikátory.Popisky nelze znovu deklarovat.Další informace naleznete v tématu Obory názvů.
Dobrým způsobem programování je používat příkazy break, continue a return namísto příkazu goto vždy, kdy je to možné.Jelikož příkaz break ukončí pouze jednu úroveň smyčky, může být příkaz goto nezbytný pro ukončení smyčky z hluboce zanořené smyčky.
Tento příklad ukazuje příkaz 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 );
}
V tomto příkladu příkaz goto předá řízení do bodu označeného popiskem stop při hodnotě proměnné i rovné 5.