goto 语句 (C++)
goto
语句无条件地将控制转移到由指定标识符标记的语句。
语法
goto identifier;
备注
由 identifier
指定的标记语句必须位于当前函数中。 所有 identifier
名称都是内部命名空间的成员,因此不会干扰其他标识符。
语句标签仅对 goto
语句有意义;否则,将忽略语句标签。 不能重新声明标签。
不允许 goto
语句将控制转移到跳过该位置范围内任何变量的初始化的位置。 以下示例引发 C2362:
int goto_fn(bool b)
{
if (!b)
{
goto exit; // C2362
}
else
{ /*...*/ }
int error_code = 42;
exit:
return error_code;
}
有一种较好的编程风格,是尽可能使用 break
、continue
和 return
语句而不是 goto
语句。 但是,由于 break
语句仅退出循环的一个级别,可能必须使用 goto
语句来退出深度嵌套的循环。
有关标签和 goto
语句的详细信息,请参阅带标签的语句。
示例
在此示例中,当 i
等于 3 时,goto
语句将控制转移到标记为 stop
的点。
// goto_statement.cpp
#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 < 2; j++ )
{
printf_s( " Inner loop executing. j = %d\n", j );
if ( i == 3 )
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 );
}
Outer loop executing. i = 0
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 1
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 2
Inner loop executing. j = 0
Inner loop executing. j = 1
Outer loop executing. i = 3
Inner loop executing. j = 0
Jumped to stop. i = 3
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈