C语言 goto 语句的基本格式是什么?如何使⽤?

一、问题

        goto 语句为⽆条件转向语句,它可以使程序⽴即跳转到函数内部的任意⼀条可执⾏语句,这样使⽤起来⽐较灵活。那么,该语句的基本格式是什么?又该如何使⽤呢?

二、解答

1. goto 语句的基本格式

        goto 关键字后⾯带⼀个语句标号,该语句标号是同⼀个函数内某条语句的标号。标号可以出现在任何可执⾏语句的前⾯,并且以⼀个冒号“ :”作为后缀。 通常的情况下,goto 与条件语句配合使⽤,可以⽤来实现条件转移,构成循环或者跳出循环体等功能。⼀般形式为:

goto 语句标号;

        在 switch 结构中,每个 case 关键字及后⾯的常量都是⼀个标号。 语旬标号⽤标识符表⽰,要遵循变量名的命名规则,即由字母、数字和下划线组成, 并且第⼀个字符不能是数字。如:

goto 25;

这个语句就是不合法的。

2. goto 语句的使⽤

        goto 后的语句标号就是要跳转的⽬标,当然这个语句标号要在程序的其他地⽅给出, 但是其语句标号要在函数内部。例如:

goto Show;
printf("the message before ShowMessage");
Show: 
printf("ShowMessage");

        上⾯代码中,goto 后的 Show 为跳转的语句标号,⽽其后 “Show:” 代码表⽰ goto 语句要跳转的位置。这样,在上⾯的语句中,第⼀个 printf0函数不会执⾏,⽽会执⾏第⼆个printf()函数。

        goto 跳转语句跳转的⽅向可以向前,也可以向后;可以跳出⼀个循环,也可以跳⼊⼀个循环。

         下⾯通过⼀个例⼦介绍使⽤ goto 语句如何从循环内部跳出。 要求程序在执⾏循环操作的过程中,当⽤户输⼊退出指令后,程序跳转到循环外部执⾏程序退出前的显示操作,程序代码如下:

#include <stdio.h>
int main()
{int i;int j;for (i = 1; i < 10; i++){printf("Tne i is:%d\n", i);do{printf("Enter a number to j\n");printf("(0 is quit,99 for the next i)\n");scanf("%d", &j);if (j == 0){goto exit;}} while (j != 99);}
exit:printf("Exit the propram!\n");return 0;
}

(1)程序运⾏时,for 循环控制程序步骤,程序输出的循环步骤为1。信息提⽰输⼊数字,其中0表示退出,99 表示下⼀个步骤。

(2)在for 循环中使⽤ do...while 判断⽤户输⼊,当条件为假时,循环结束,执⾏ for 循环的下⼀步。在程序中假如⽤户输⼊数字 3,既不退出也不到下⼀步骤,程序显示继续输⼊数字。当输⼊数字为99 时,跳转到下⼀步,显⽰提示信息 “The step is 2”。

(3)当⽤户输⼊的是0时,那么通过 if 语句进⾏判断为真,执⾏其中的 goto 语句执⾏跳转。其中 exit 为跳转的语句标号。循环的外部使⽤ “exit:”表示 goto跳转的位置,然后执⾏ printf 语句,输出⼀段信息,表⽰程序结束。

程序运⾏结果如图

Tne i is:1
Enter a number to j
(0 is quit,99 for the next i)
3
Enter a number to j
(0 is quit,99 for the next i)
99
Tne i is:2
Enter a number to j
(0 is quit,99 for the next i)
0
Exit the propram!

三、总结

        goto 语句虽然能够按照⾃⼰的意愿改变程序的运⾏⽅向,但是这样会使程序流程⽆规律,可读性较差,所以⼀般不使⽤ goto,⽽且它的功能⽤ break 和 continue 都能实现,可以⽤其代替 goto。

说明:

        除⾮能较⼤程度地提⾼程序的效率,否则不⽤ goto 语句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/728793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日五道java面试题之springMVC篇(一)

目录&#xff1a; 第一题. 什么是Spring MVC&#xff1f;简单介绍下你对Spring MVC的理解&#xff1f;第二题. Spring MVC的优点第三题. Spring MVC的主要组件&#xff1f;第四题. 什么是DispatcherServlet?第五题. 什么是Spring MVC框架的控制器&#xff1f; 第一题. 什么是S…

子查询与连表查询

子查询与连表查询 标签:数据库 子查询 mysql> explain select e.empno,e.ename,(select dname from dept d where e.deptno d.deptno) as dname from emp e where e.deptno 1; -------------------------------------------------------------------------------------…

中间件 | Redis - [big-key hot-key]

INDEX 1 big-keyhot-key 1 big-key 分类 字符串型 big-key&#xff1a;字符串最大可以到 512M集合型 big-key&#xff1a;集合个数可以到 2^23 问题 内存空间不均匀指令耗时增加&#xff1a;redis 是单线程的&#xff0c;部分操作的时间复杂度是 O(n) 的&#xff0c;big-ke…

Java后端 - 一面凉经 - 得物(国际电商)

招聘流程&#xff1a; 2024.1.5 HR邮件沟通 2024.1.7 上午面试 面试流程&#xff1a; 简单自我介绍 简单问实习工作 介绍目前Java项目 如何在项目中处理并发问题 讲讲并发编程 如何使用锁 问什么like查询慢 explain具体讲讲 加索引为什么会变快 索引是什么数据结构…

python-批量操作excel

批量新增excel文件 import osimport xlwings as xwapp xw.App(visibleTrue,add_bookFalse)#visible设置为ture的时候会自动打开创建的excel文件&#xff0c;设为为false的时候不会看到excel文件打开了&#xff0c;实际进程占用了....dept_list [人事部,财务部,研发部,行政部…

Manz高压清洗机S11-028GCH-High Quality Cleaner 操作使用说明492页

Manz高压清洗机S11-028GCH-High Quality Cleaner 操作使用说明492页

Kafka 设计之消息传递保障

目录 一. 前言 二. Kafka 消息传递保障设计 一. 前言 消息传递保障对于分布式系统的可靠性至关重要。在分布式系统中消息传递保障是确保系统可靠性的核心问题之一。系统需要确保消息能够按照预期的方式进行传递&#xff0c;以满足业务需求。 Kafka 是一种分布式的消息队列系统…

智能部署之巅:Amazon SageMaker 引领机器学习革新

本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 &#xff08;全球 TMT 2023年12月6日讯&#xff09;亚马逊云科技在 2023 re:Invent 全…

2024 GoLand激活,分享几个GoLand激活的方案

文章目录 GoLand公司简介我这边使用GoLand的理由GoLand 最新变化GoLand 2023.3 最新变化AI Assistant 正式版GoLand 中的 AI Assistant&#xff1a;_Rename_&#xff08;重命名&#xff09;GoLand 中的 AI Assistant&#xff1a;_Write documentation_&#xff08;编写文档&…

Linux编程3.5 进程-进程创建

1、相关函数 #include<unistd.h> #include<sys/types.h> pid_t fork(void); 返回&#xff1a;子进程中为0&#xff0c;父进程中为子进程ID&#xff0c;出错为-1pid_t vfork(void); 返回&#xff1a;子进程中为0&#xff0c;父进程中为子进程ID&#xff0c;出…

HBase介绍、特点、应用场景、生态圈

目录: 一、HBase简介 二、NoSQL和关系型数据库对比 三、HBase特点 四、应用场景 五、HBase生态圈技术 一、HBase简介 HBase是一个领先的NoSQL数据库 是一个面向列存储的NoSQL数据库 是一个分布式Hash Map&#xff0c;底层数据是Key-Value格式 基于Coogle Big Table论文 使用HD…

Unity零基础到进阶 | Unity中 屏蔽指定UI点击事件 的多种方法整理

Unity零基础到进阶 | Unity中 屏蔽指定UI点击事件 的多种方法整理一、Unity中 屏蔽透明区域的点击事件1.1 使用Image组件自带的参数检测1.2 根据点击的坐标计算该点的像素值是否满足阈值 二、Unity中屏蔽 不规则图片按钮点击的事件 总结 &#x1f3ac; 博客主页&#xff1a;htt…

遗传算法优化BP神经网络时间序列回归分析,ga-bp回归分析

目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 遗传算法原理 遗传算法主要参数 遗传算法流程图 完整代码包含数据下载链接: 遗传算法优化BP神经网络时间序列回归分析,ga-bp回归分析(代码完…

Qt 类的前置声明和头文件包含

1. 在头文件中引入另一个类经常有两种写法 1&#xff09;前置声明 2&#xff09;头文件包含 #ifndef FRMCOUPLE2_H #define FRMCOUPLE2_H#include <QWidget> //头文件包含namespace Ui { class frmcouple2; }//前置声明&#xff1a;QPushButton frmchkeyboard…

moi3D安装

下载文件双击文件 下一步 同意下一步 下一步 下一步 下一步 安装下一步 完成 破解 将如图中的文件复制到文件目录下 汉化 在目录中进入ui文件夹下 在安装包中找到如下的文件复制到ui目录下 在打开 另存为 另存为时改一下编码格式如图 打开软件 找到如图options进入…

图像分类技术在城市垃圾分类与处理中的应用与实践

一、引言 在当今世界&#xff0c;城市化进程不断加快&#xff0c;随之而来的是日益增长的垃圾处理压力。城市生活垃圾、工业固体废物和危险废物的处理已经成为环境保护领域的一大挑战。为了应对这一挑战&#xff0c;卫生填埋、垃圾堆肥和垃圾焚烧等技术路线应运而生。其中&…

Cloud-Eureka服务治理-Ribbon负载均衡

构建Cloud父工程 父工程只做依赖版本管理 不引入依赖 pom.xml <packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.9.RELEA…

微服务架构下的接口调用链路梳理方案(AI问答)

接口调用链路梳理 我有很多的接口&#xff0c;不知道有哪些微服务在调用它&#xff0c;我应该怎么把调用链路梳理出来&#xff1f; 在微服务架构中&#xff0c;梳理接口调用链路是一项关键的运维和调试任务。为了找出哪些微服务正在调用特定的接口&#xff0c;可以采用以下几种…

【系统学习】2-Java进阶知识总结-3-集合-1-补充【泛型、树、数据结构】

文章目录 泛型什么是泛型&#xff1f;常见的泛型标识符泛型类泛型方法泛型接口通配符 树树的基本概念什么是二叉树&#xff1f;二叉树--普通二叉树二叉树--二叉查找树定义规则优缺点 二叉树--平衡二叉树定义规则旋转机制 二叉树--红黑树定义规则红黑规则 常见数据结构总体特点结…

【自然语言处理】NLP入门(五):1、正则表达式与Python中的实现(5):字符串常用方法:对齐方式、大小写转换详解

文章目录 一、前言二、正则表达式与Python中的实现1.字符串构造2. 字符串截取3. 字符串格式化输出4.字符转义符5. 字符串常用函数函数与方法之比较 6. 字符串常用方法1. 对齐方式center()ljust()rjust() 2. 大小写转换lower()upper()capitalize()title()swapcase() 一、前言 本…