goto 和标记语句 (C)

该语句将 goto 控件传输到标签。 给定标签必须驻留在同一函数中,并且只能在同一函数中的一个语句之前显示。

语法

statement:
labeled-statement
jump-statement

jump-statement:
goto identifier ;

labeled-statement:
identifier : statement

语句标签仅对 goto 语句有意义;在任何其他上下文中,不考虑标签执行标记的语句。

A jump-statement 必须位于同一函数中,并且只能出现在同一函数中的一个语句之前。 后面的identifier名称集goto具有自己的名称空间,因此名称不会干扰其他标识符。 无法重新声明标签。 有关详细信息,请参阅 名称空格

最好尽可能使用 ,breakcontinue优先return使用goto语句。 break由于该语句仅从一个循环级别退出,goto因此可能需要从深层嵌套循环中退出循环。

此示例演示语句 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 );
}

在此示例中,goto语句将控件传输到在等于 5 时stop标记i的点。

另请参阅

语句