Goto标签无条件跳转
goto 语句会造成无条件跳转,它跳转到同一个函数中的另一条语句。跳转的目的地使用标签名称来指定,
语法如下:
goto 标签名称;
一个标签由标签名称及其后面的冒号组成:
标签名称: 语句
标签有自己的命名空间,也就是说,标签可以使用与变量或类型一样的名称,而不会发生冲突。标签可以被放在任何语句的前面,并且一条语句也可以有多个标签。
标签的目的是标识 goto 语句的目的地,对于语句本身,没有任何影响,被贴上标签的语句依然可以由上而下顺序地执行。
int main()
{
int i = 5;
printf(“hello world1\n”);
goto Here;
printf(“hello world2\n”);
printf(“hello world3\n”);
printf(“hello world5\n”);
printf(“hello world6\n”);
printf(“hello world7\n”);
for (; i < 10; i++)
{
//Here:
printf(“hello world4\n”);
//if()
}
system(“pause”);
return 0;
Here:
//语句
printf(“hello world7\n”);
}
如果使用太多 goto 语句,程序代码会变得可读性很差,因此,只有在非常有必要时才应该使用 goto 语句,比如从很深的嵌套循坏中跳离。实际上,在任何使用到 goto 语句的地方,都可以采用其他方式的语句进行改写。
goto 语句只允许进行局部跳转:也就是在当前所在函数的内部跳转。C 语言还提供了一个特性,允许进行非局部跳转,即可以跳转到程序的任何点,做法是利用标准宏 setjmp()和标准函数 longjmp()。