将 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 语句相关推荐

  1. mysql执行非查询语句_iBatis执行非查询语句(CRUD,函数和过程)

    insert into users(USERNAME,PASSWORD,AGE,MOBILE,EMAIL) values(#userName:VARCHAR#,#password:VARCHAR#,# ...

  2. Verilog初级教程(15)Verilog中的阻塞与非阻塞语句

    文章目录 前言 正文 阻塞赋值 非阻塞赋值 往期回顾 参考资料以及推荐关注 前言 本文通过仿真的方式,形象的说明阻塞赋值以及非阻塞赋值的区别,希望和其他教程相辅相成,共同辅助理解. 正文 阻塞赋值 阻 ...

  3. c语言中常用的程序,C语言一些常用语句

    一 break 1. break语句形式: break; 2. break语句功能: A. switch语句中,break语句会终止其后语句的执行,退出switch语句. B. 使一个循环立即结束,也 ...

  4. C语言中要改变循环语句的流程可以使用的语句有哪些

    C语言中要改变循环语句的流程可以使用的语句有:break,continue和goto.break语句可以终止循环而执行整个循环语句后面的代码:continue语句可以跳过循环体中剩余的语句而强制进入下 ...

  5. sql中“delete from 表名”表示_SQL查询语句知识点总结

    为什么要学习SQL? 数据分析岗位的基础技能:SQL语句和会使用SQL语句操纵数据库软件: 数据量增大的工具需求:excel处理十万以内的数据:数据量增大,需要使用更快速便捷的工具分析数据. SQL知 ...

  6. C语言中阶第一篇:分支和循环语句透析,包含getchar和scanf的详细介绍(本篇循环只到while)

    业精于勤荒于嬉,行成于思毁于随. 在笔者初阶的文章里,已经介绍过分支和循环语句,不过由于是初阶,所以并不细致,今天我们正式打开了中阶的大门,开始一步一步的深入C语言的学习. C语言是结构化的程序设计语 ...

  7. php goto语句,PHP语法:goto 语句

    问题 当 PHP 在执行代码过程,在某一时刻我们希望它能跳转到某一特定位置继续执行代码,该怎么做呢? 回答 在 PHP 中,我们可以使用 goto 操作符来使 PHP 代码执行器跳转到程序中某一特定位 ...

  8. C语言语句(3)——goto语句

    目录 1 介绍goto语句 2 写一个关机程序 1 介绍goto语句 C语言中提供了可以随意滥用的goto语句和标记跳转的标号,从理论上goto语句是没有必要的,实践中没有goto语句也可以很容易的写 ...

  9. python中正确的输入语句x、y=input_语句x=input()执行时,如果从键盘输入12并按回车键,则x的值是( )。_学小易找答案...

    [多选题]听障儿童辨音训练包括( ) [简答题]实现栈类(顺序栈跟链栈均可),并利用栈实现十进制到二进制的转换. 将源代码.py文件作为附件上传. [简答题]什么是空字典和空集合?如何创建 [简答题] ...

最新文章

  1. python3 pip3 安装包报错 Could not find a version that satisfies the requirement 解决方法
  2. 精通python-轻松打造11周精通python计划(完结) | 软件库
  3. java catch 空指针异常_关于Java:捕获空指针异常
  4. python json包_python编程 之 json包
  5. 东财计算机应用基础单元作业,东财21春《计算机应用基础》单元作业一 【标准答案】...
  6. life of a NPTL pthread
  7. hdu-5867 Water problem(水题)
  8. ELK下es索引管理工具-curator
  9. LabVIEW相关工具包与模块安装
  10. Eclipse安装Lombok
  11. gtx780有html接口吗,史上最强显卡供电GTX780入手,纪念给了我人生一堂课的舅妈...
  12. 技术发展杂谈——RTC、WebRTC、VP9(2018年的文章)
  13. java后台怎么解密md5,Java md5 密码加解密
  14. Element表格固定第一列和第一行,并通过属性名动态渲染数据
  15. html5进度条progress使用实例,HTML5中的进度条progress元素详解
  16. win10计算机系统慢,电脑win10系统为什么反应那么慢,原来出在这里
  17. 解决IDEA的图标消失
  18. 使用OpenCV实现偏斜文档校正
  19. 为什么论文中有的空格特别大
  20. 两个ListMap中同下标的map去重合并

热门文章

  1. 更改整个目录文件的所有权限
  2. 《Netkiller Spring Cloud 手札》之 Master / Slave 主从数据库数据源配置
  3. Android面试最新总结
  4. POJ 3164 Command Network (最小树形图)
  5. ChaosConf 2018:混沌实验的演变
  6. 饿了么CTO张雪峰:允许90后的技术人员“浮躁“一点
  7. Cassandra - Insert after Delete fails silently
  8. maven学习(上)- 基本入门用法
  9. 配置终端服务连接的安全设置
  10. html编辑四则运算,简单的web四则运算计算器