将 C++ 中的 goto 语句转化为非 goto 语句

快来打我* 2021-09-25 04:30 483阅读 0赞

将 C++ 中的 goto 语句转化为非 goto 语句

  goto 语句是公认的被编程语言支持但不建议使用的语句。一方面,在某些时候使用 goto 语句能增加代码的可读性,降低其复杂性。另一方面,goto 语句将增加代码的耦合性,对于大型应用的开发将带来诸多弊端。绝大多数人对使用goto语句持反对意见。另外,在学术上,Corrado Böhm 及 Giuseppe Jacopini 从理论上证明了:任何程序都可以用顺序、分支和重复结构表示出来。这个结论表明,从高级程序语言中去掉 goto 语句并不影响高级程序语言的编程能力,而且编写的程序的结构更加清晰。

  但是,一些老代码上依然有goto的痕迹。有鉴于此,本文给出了将 C++ 中的 goto 语句转化为非 goto 语句的基本方法。

  这里提供的是 goto 语句与跳转标签对于循环作用域来说同级(即 goto 语句与跳转标签之间没有被其它循环分隔。因为如果被分隔的化,break 的效果就会被“其它循环”所“吸收”)时的转化。

  如下面的含 goto 的语句:

  1. if(...)
  2. {
  3. ...//某代码1
  4. goto somewhere;
  5. }
  6. ...//某代码2
  7. somewhere:
  8. ...//某代码3

  可转化为如下非 goto 语句:

  1. for (int order = 1; order <= 1; ++order)// 只循环一次
  2. {
  3. if(...)
  4. {
  5. ...//某代码1
  6. break;
  7. }
  8. ...//某代码2
  9. }
  10. ...//某代码3

发表评论

表情:
评论列表 (有 0 条评论,483人围观)

还没有评论,来说两句吧...

相关阅读

    相关 goto语句用法

    gnto语句是无条件转向语句,它的格式如下所示: gota(语句标号>; 其中,goto是关键字,(语句标号)是一种标识符,按标识符的规则来写出语句标号。语句标号是用来

    相关 c语言goto(c语言goto语句)

    C语言goto语句的用法 goto的用法前面已经有人回答了,我就不重复了。 原则上是最好不要用,因为程序要讲究结构性、可读性,goto语句会破坏这点。 但万事不是绝对

    相关 goto语句

    对于goto语句,在c/c++中就已经被不推荐使用了,在java中根本就没有goto的存在了,为什么c\中又重新使用goto语句呢? 首先了解一下c\中的goto语句

    相关 php特性goto语句

    goto语句使用 > goto的使用一直有争议\[5.3版本增加\] > 支持者:goto使用起来比较灵活,而且有些情形能提高程序的效率。 > 反对者:goto语