当前位置: 首页 > news >正文

C语言番外篇(4)--------->goto语句

在C语言中,有一个很特殊的语法,这就是goto语句。goto用于实现同一函数的跳转,goto后面会有一个标志,执行goto语句时,就会跳转到标志的位置。

一、goto语句的语法

(1)goto在前,标志在后

没有使用goto语句的代码:

#include <stdio.h>int main()
{printf("C语言\n");printf("Java\n");printf("C++\n");return 0;
}

在VS2019中的运行结果:

上面的例子用于比较使用goto语句的情况:

上述代码使用了goto语句:

#include <stdio.h>int main()
{printf("C语言\n");printf("Java\n");goto flag;printf("C++\n");flag:return 0;
}

在VS2019中的运行结果:

在结果中,我们可以看到goto语句和标志间的代码并没有打印,也就是C++并没有打印在屏幕上。 

(2)goto在后,标志在前

如果标志在前面,goto在后面会是怎样的情况呢?

参考代码:

#include <stdio.h>int main()
{printf("C语言\n");printf("Java\n");flag:printf("C++\n");goto flag;return 0;
}

在VS2019中的运行结果:

这时候我们可以看到,当执行到goto语句的时候又会返回到flag的位置,然后打印C++。后面又到goto,继而又到标志flag。从而,形成了一个死循环。 

二、goto语句的应用场景

从刚刚的例子中,相信你学会了如何使用goto语句。goto语句用在函数中,跳转到标志的位置。如果使用次数过多,将会使得代码的可控性下降,不利于开发人员维护和阅读代码。但是,在多个循环中,使用goto语句可以很好的跳出多层循环。

之前的博客中提及到了多层循环是使用break跳出的,但是一个break只能跳出一层循环,当循环层数过多时使用break的数量也会变多。对于这种情况,我们可以使用goto语句很好解决。

参考代码:

#include <stdio.h>int main()
{int i = 0;int j = 0;int y = 0;for (i = 0; i < 10; i++){for (j = 0; j < 10; j++){for (y = 0; y < 10; y++){if (5 == y){printf("hehe\n");goto flag;}else {printf("hello\n");}}}}flag:return 0;
}

在VS2019中的运行结果:

我们可以看到,当满足判断条件时可以直接跳出多层循环。 

http://www.lryc.cn/news/543017.html

相关文章:

  • AI 编码 2.0 分析、思考与探索实践:从 Cursor Composer 到 AutoDev Sketch
  • Linux与自动化的基础
  • 安全开发-环境选择
  • 【算法设计与分析】(一)介绍算法与复杂度分析
  • SurfaceFlinger代码笔记
  • 2025 PHP授权系统网站源码
  • Fisher散度:从信息几何到机器学习的隐藏利器
  • 深度学习每周学习总结Y1(Yolov5 调用官方权重进行检测 )
  • 实体机器人在gazebo中的映射
  • 【学习笔记】Kubernetes
  • 【网络编程】几个常用命令:ping / netstat / xargs / pidof / watch
  • 上海创智学院(测试)算法笔试(ACM赛制)部分例题
  • 【学术投稿-第四届材料工程与应用力学国际学术会议(ICMEAAE 2025】材料工程与应用力学的探讨
  • 2025吐槽季第一弹---腾讯云EO边缘安全加速平台服务
  • 力扣-动态规划-70 爬楼梯
  • 【DeepSeek】-macOS本地终端部署后运行DeepSeek如何分析图片
  • 使用 pytest-mock 进行 Python 高级单元测试与模拟
  • lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并等。
  • 《Linux 指令集:开启极客世界的钥匙_01》
  • 【Android】用 chrome://inspect/#devices 调试H5页面
  • Deepseek 实战全攻略,领航科技应用的深度探索之旅
  • 《论区块链技术及应用》审题技巧 - 系统架构设计师
  • ROS2 强化学习:案例与代码实战
  • 【Python模块】——pymysql
  • 【我的Android进阶之旅】Android Studio SDK Update Site 国内的腾讯云镜像配置指南
  • springboot实现多文件上传
  • Webpack打包优化
  • 浅谈HTTP及HTTPS协议
  • GTID的基本概念
  • .NET Core MVC IHttpActionResult 设置Headers