社区
C++ 语言
帖子详情
关于goto
rchu
2006-09-21 02:58:47
很多高级语言,包括C/C++都支持goto,虽然种种理论都表示goto可以不用,也尽量不应该用。
那么,假设现在要完全禁止C语言中的goto,在已有程序已经用了goto的情况下,有没有尽可能简单的办法(不做太多的词法和语法分析),设计一个自动转换的算法,彻底把goto换成等价的语句呢。
...全文
384
16
打赏
收藏
关于goto
很多高级语言,包括C/C++都支持goto,虽然种种理论都表示goto可以不用,也尽量不应该用。 那么,假设现在要完全禁止C语言中的goto,在已有程序已经用了goto的情况下,有没有尽可能简单的办法(不做太多的词法和语法分析),设计一个自动转换的算法,彻底把goto换成等价的语句呢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fiftymetre
2006-09-28
打赏
举报
回复
记好一个GOTO准则就好。GOTO 只向前跳,不要向后跳,你就不会晕头。
if(a)
goto ERROR;
...
if(b)
goto ERROR;
...
if(c)
goto ERROR;
...
ERROR:
就向这样。
qqqee
2006-09-28
打赏
举报
回复
错误处理的时候,代码清晰一点。
比如:
if(a)
goto ERROR;
...
if(b)
goto ERROR;
...
if(c)
goto ERROR;
...
ERROR:
...
Duwchy
2006-09-23
打赏
举报
回复
goto是要使用得当,也没什么坏处,在一些程序的条件分支或循环里可以适当的使用一些goto语句,也不会怎么影响程序的可读性和所谓的破坏程序结构。
在java里,一般的带条件的循环块在编译后都是转换成使用goto跳转的。
珍惜生命远离CPP
2006-09-23
打赏
举报
回复
我居然不会goto的语法,唉~
anomone1208
2006-09-23
打赏
举报
回复
现在都不提倡用goto语句,goto语句使程序的静态结构和程序的动态执行之间有很大的差别,这样使程序难以阅读,难以查错。对一个程序来说,人们最关心的是他运行的正确与否,去掉goto语句后,可以直接从程序结构上反映程序的运行过程。这样,不仅使程序的结构清晰、便于阅读,便于查错,而且也有利于程序正确性的证明。
不加限制地使用goto语句,特别是使用往回跳的goto语句,会使程序的结构难于理解,这种情形应该尽量避免使用goto语句;另外,为了提高程序的效率,同时又不破坏程序的良好结构,有控制地使用一些goto语句是有必要的。
healer_kx
2006-09-21
打赏
举报
回复
我不懂goto了。虽然搞了10年的goto
superarhow
2006-09-21
打赏
举报
回复
通常的做法是用异常机制来代替。还有就是,如果程序不需要退出循环,就用这样的写法:
do
{
在需要goto的地方用break就可以了
} while (FALSE);
label1:
....
weijiangshanwww
2006-09-21
打赏
举报
回复
看吧,当使用了过多的GOTO的时候,程序本身就是个很大的麻烦,如果想要不怎么进行语法分析,我个人有个建议,把 GOTO{....};中的块改成一函数,然后调用该函数。
liujycquc
2006-09-21
打赏
举报
回复
goto语句还是蛮有用的 比如跳出较多层的循环,,,
OOPhaisky
2006-09-21
打赏
举报
回复
首先,goto破坏了程序的良好结构,使得模块不再是“单入单出”,这是很糟糕的事情。
其次,如果想将goto转换掉,同时不改变程序的语义,有办法可以做到,但是方法涉及到数理逻辑和程序设计方法学的相关知识(一旦涉及到数理逻辑,就意味着有很多的公式推导),所以如果想“不做太多的词法和语法分析”,那么只能针对简单的程序逻辑,凭借“经验”来转换,如果想又一个“系统的”方法对包含goto的复杂程序进行转换,则“不做太多的词法和语法分析”是肯定不行的。
sinall
2006-09-21
打赏
举报
回复
如果这个没有什么难度,
goto 早被取消了 ...
————————————————————————————————————————
顶这句!
HappyTree
2006-09-21
打赏
举报
回复
不好替换,有时需要做很大的调整的。
jixingzhong
2006-09-21
打赏
举报
回复
设计一个自动转换的算法,彻底把goto换成等价的语句
==========================
如果这个没有什么难度,
goto 早被取消了 ...
这个自动转换也不需要设计实现了,
因为如果你的这个要求容易实现的话, 那为什么还要使用颇有争议的 goto ?
它的存在就是因为在一些特殊情况带来的简捷,方便 ...
jixingzhong
2006-09-21
打赏
举报
回复
goto 的使用还是具有一定的优势的,
如果要实现自动转换,
倒是可以考虑用 setjmp 和 longjmp 替换 ...
但是这个只能替换那种goto后退,
如果是向前 goto 的方式,
setjmp 和 longjmp 就没有用武之地了 ...
javaman8
2006-09-21
打赏
举报
回复
好像没有什么特别好的方法,不同情况的可能太多了.
突击召唤师
2006-09-21
打赏
举报
回复
本来就是逻辑的转换,分析很复杂的。goto就是因为比较简单才有人用。
c语言---16 关于
goto
语句
C语言提供了可以随意使用的
goto
语句和标记跳转的标号,但是不建议用
goto
语句。从理论上
goto
语句是没有必要的,实践中没有
goto
语句也可以很容易地写出代码,但是某些场合中
goto
语句还是用得着的,最常见的用法就是...
关于
goto
语句能不能从复杂的嵌套循环判断中跳出去的问题讨论
关于
goto
语句的使用问题,要从技术上来讨论清楚能不能使用,在那些情况下能使用是比较困难的问题。我在写关于
goto
语句的使用这段文字时,思考再三,觉得如果从一个复杂的执行状态中
goto
到另外一个位置时,初学者是很...
关于
goto
语句
在60年代末和70年代,关于
goto
语句的争论是比较激烈的。主张从高级语言中去掉
goto
语句的人认为:
goto
语句是对程序结构影响最大的一种有害语句;他们的主要理由是:
goto
语句使程序的静态结构和程序的动态执行之间有很...
关于
goto
语句的使用
在项目中用到了大量的
goto
语句,遭到了领导的指责,感觉挺委屈的。 作为一个程序员,在很多地方都看到说要避免
goto
语句的使用。
goto
语句如洪水猛兽,其实都误解了
goto
。滥用
goto
的确很恐怖,可是合理使用却能够对...
【c】C语言中
goto
详细分析,和使用do{........}while(0)来代替
goto
语句的功能。
我们都知道
goto
语句经常被人所诟病,原因是: 首先,由于
goto
语句可以灵活跳转会导致破坏结构化设计风格,若一段代码多次使用
goto
语句会降低代码的可读性。 其次,
goto
语句的执行可能会跳过变量的初始化、重要的...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章