[c&c++系列] Goto标签无条件跳转

本文深入探讨了Goto语句的使用,解释了其如何实现无条件跳转,以及在何种情况下应避免使用以保持代码的清晰度。此外,文章还提到了C语言中非局部跳转的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值