将 C++ 中的 goto 语句转化为非 goto 语句
将 C++ 中的 goto 语句转化为非 goto 语句
goto 语句是公认的被编程语言支持但不建议使用的语句。一方面,在某些时候使用 goto 语句能增加代码的可读性,降低其复杂性。另一方面,goto 语句将增加代码的耦合性,对于大型应用的开发将带来诸多弊端。绝大多数人对使用goto语句持反对意见。另外,在学术上,Corrado Böhm 及 Giuseppe Jacopini 从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉 goto 语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰。
但是,一些老代码上依然有goto的痕迹。有鉴于此,本文给出了将 C++ 中的 goto 语句转化为非 goto 语句的基本方法。
这里提供的是 goto 语句与跳转标签对于循环作用域来说同级(即 goto 语句与跳转标签之间没有被其它循环分隔。因为如果被分隔的化,break 的效果就会被“其它循环”所“吸收”)时的转化。
如下面的含 goto 的语句:
if(...){...//某代码1goto somewhere;}...//某代码2somewhere:...//某代码3
可转化为如下非 goto 语句:
for (int order = 1; order <= 1; ++order)// 只循环一次{if(...){...//某代码1break;}...//某代码2}...//某代码3
将 C++ 中的 goto 语句转化为非 goto 语句相关推荐
- mysql执行非查询语句_iBatis执行非查询语句(CRUD,函数和过程)
insert into users(USERNAME,PASSWORD,AGE,MOBILE,EMAIL) values(#userName:VARCHAR#,#password:VARCHAR#,# ...
- Verilog初级教程(15)Verilog中的阻塞与非阻塞语句
文章目录 前言 正文 阻塞赋值 非阻塞赋值 往期回顾 参考资料以及推荐关注 前言 本文通过仿真的方式,形象的说明阻塞赋值以及非阻塞赋值的区别,希望和其他教程相辅相成,共同辅助理解. 正文 阻塞赋值 阻 ...
- c语言中常用的程序,C语言一些常用语句
一 break 1. break语句形式: break; 2. break语句功能: A. switch语句中,break语句会终止其后语句的执行,退出switch语句. B. 使一个循环立即结束,也 ...
- C语言中要改变循环语句的流程可以使用的语句有哪些
C语言中要改变循环语句的流程可以使用的语句有:break,continue和goto.break语句可以终止循环而执行整个循环语句后面的代码:continue语句可以跳过循环体中剩余的语句而强制进入下 ...
- sql中“delete from 表名”表示_SQL查询语句知识点总结
为什么要学习SQL? 数据分析岗位的基础技能:SQL语句和会使用SQL语句操纵数据库软件: 数据量增大的工具需求:excel处理十万以内的数据:数据量增大,需要使用更快速便捷的工具分析数据. SQL知 ...
- C语言中阶第一篇:分支和循环语句透析,包含getchar和scanf的详细介绍(本篇循环只到while)
业精于勤荒于嬉,行成于思毁于随. 在笔者初阶的文章里,已经介绍过分支和循环语句,不过由于是初阶,所以并不细致,今天我们正式打开了中阶的大门,开始一步一步的深入C语言的学习. C语言是结构化的程序设计语 ...
- php goto语句,PHP语法:goto 语句
问题 当 PHP 在执行代码过程,在某一时刻我们希望它能跳转到某一特定位置继续执行代码,该怎么做呢? 回答 在 PHP 中,我们可以使用 goto 操作符来使 PHP 代码执行器跳转到程序中某一特定位 ...
- C语言语句(3)——goto语句
目录 1 介绍goto语句 2 写一个关机程序 1 介绍goto语句 C语言中提供了可以随意滥用的goto语句和标记跳转的标号,从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写 ...
- python中正确的输入语句x、y=input_语句x=input()执行时,如果从键盘输入12并按回车键,则x的值是( )。_学小易找答案...
[多选题]听障儿童辨音训练包括( ) [简答题]实现栈类(顺序栈跟链栈均可),并利用栈实现十进制到二进制的转换. 将源代码.py文件作为附件上传. [简答题]什么是空字典和空集合?如何创建 [简答题] ...
最新文章
- python3 pip3 安装包报错 Could not find a version that satisfies the requirement 解决方法
- 精通python-轻松打造11周精通python计划(完结) | 软件库
- java catch 空指针异常_关于Java:捕获空指针异常
- python json包_python编程 之 json包
- 东财计算机应用基础单元作业,东财21春《计算机应用基础》单元作业一 【标准答案】...
- life of a NPTL pthread
- hdu-5867 Water problem(水题)
- ELK下es索引管理工具-curator
- LabVIEW相关工具包与模块安装
- Eclipse安装Lombok
- gtx780有html接口吗,史上最强显卡供电GTX780入手,纪念给了我人生一堂课的舅妈...
- 技术发展杂谈——RTC、WebRTC、VP9(2018年的文章)
- java后台怎么解密md5,Java md5 密码加解密
- Element表格固定第一列和第一行,并通过属性名动态渲染数据
- html5进度条progress使用实例,HTML5中的进度条progress元素详解
- win10计算机系统慢,电脑win10系统为什么反应那么慢,原来出在这里
- 解决IDEA的图标消失
- 使用OpenCV实现偏斜文档校正
- 为什么论文中有的空格特别大
- 两个ListMap中同下标的map去重合并
热门文章
- 更改整个目录文件的所有权限
- 《Netkiller Spring Cloud 手札》之 Master / Slave 主从数据库数据源配置
- Android面试最新总结
- POJ 3164 Command Network (最小树形图)
- ChaosConf 2018:混沌实验的演变
- 饿了么CTO张雪峰:允许90后的技术人员“浮躁“一点
- Cassandra - Insert after Delete fails silently
- maven学习(上)- 基本入门用法
- 配置终端服务连接的安全设置
- html编辑四则运算,简单的web四则运算计算器