将 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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部