当前位置: 首页 > 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中的运行结果:

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

相关文章:

  • 如何进行OceanBase 运维工具的部署和表性能优化
  • Linux 内核配置机制详细讲解
  • 【Jenkins】一种灵活定义多个执行label节点的jenkinsfile写法
  • 【由技及道】模块化战争与和平-论项目结构的哲学思辨【人工智智障AI2077的开发日志】
  • 【c++】【线程池】固定式线程池(FixedThreadPool)
  • 解锁C# XML编程:从新手到实战高手的蜕变之路
  • Document对象
  • 【组态PLC】基于西门子S7-200和博图V16和组态王十层起重机电梯设计【含PLC组态源码 M018期】
  • 什么是 Java 中的线程安全?
  • 使用前端 html css 和js 开发一个AI智能平台官网模板-前端静态页面项目
  • 运维脚本——10.服务健康检查与自愈
  • ffmpeg avformat_open_input的作用
  • 赚钱的事与值钱的事
  • 绕过information_schema库的一些方式
  • 总结一下Java中的线程池的面试问题
  • ms-swift 3.x和2.x中参数不一致的暗坑
  • string类详解(下)
  • Spark内存并行计算框架
  • 设计模式教程:模板方法模式(Template Method Pattern)
  • 体验腾讯tencent-deepseek-R1模型
  • 小小水蜜桃视频高清在线观看/seo管理系统
  • 网站建设好处zu97/搜索seo神器
  • 襄樊建设网站/网站推广网
  • 程序员 修电脑 做网站/系统优化工具
  • 网站建设与管理职业分析/今日短新闻20条
  • 上海做网站推荐/厦门seo关键词排名