注册 登录
编程论坛 C++教室

[分享]高手关于GOTO语句的精辟见解

野比 发布于 2007-06-16 22:02, 1707 次点击

我本人由于是搞单片机的, 常用汇编, 总是在指令里跳来跳去,
因此对于类似的跳转语句GOTO一向都不排斥(虽然我用高级语言时从没用过GOTO).
不过看了林博士的讲解, 令我对GOTO的理解又深了一层..实在获益匪浅.

摘自<<高质量C、C++编程指南>> 作者:林锐 博士

作者简介:
林锐,2000年获浙江大学计算机应用博士学位。大学期间两度被评为中国百名跨世纪优秀大学生,1996年获电子工业部科技进步二等奖,1997年获首届中国大学生电脑大赛软件展示一等奖。2000年7月加入上海贝尔有限公司,从事软件工程和CMM/CMMI研究与推广工作,出版著作三部,2003年7月当选为Alcatel集团技术委员会会员。2004年创建上海漫索计算机科技有限公司。

自从提倡结构化设计以来,goto 就成了有争议的语句。首先,由于goto 语句可以
灵活跳转,如果不加限制,它的确会破坏结构化设计风格。其次,goto 语句经常带来错
误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计算等语句,例如:
goto state;
String s1, s2; // 被goto 跳过
int sum = 0; // 被goto 跳过

state:

如果编译器不能发觉此类错误,每用一次goto 语句都可能留下隐患。
很多人建议废除C++/C 的goto 语句,以绝后患。但实事求是地说,错误是程序员自
己造成的,不是goto 的过错
。goto 语句至少有一处可显神通,它能从多重循环体中咻
地一下子跳到外面,用不着写很多次的break 语句; 例如
{ …
{ …
{ …
goto error;
}
}
}
error:

就象楼房着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑。所以我们主
张少用、慎用goto 语句,而不是禁用。

[此贴子已经被作者于2007-6-17 10:47:31编辑过]

14 回复
#2
百年不亮2007-06-16 22:16
没想到你是搞单片机的,以后要向你请教了.现在往嵌入式发展很有钱途.

很多书上只是说goto不能滥用,没有说不能用.菜刀锋利切菜快,切手指也快,功能强大的东西往往容易造成大的破坏,就看使用者的驾驭能力.
#3
ioriliao2007-06-16 22:23
c( ̄? ̄)a" 我讨厌~~Infinite电路板~~~
呵呵...我看过野比个性签名,也想到了七分你是搞单片机的了,果然!
#4
野比2007-06-16 22:40
呵...其实说实话..搞底层很苦..钱还少..有"钱"途是没错, 可是你要做不到系统层就没啥可分的了..

我记得以前读书时老师给我们灌输的是"实力不够就不要用GOTO", 所以"你们以后就别用GOTO了"....
真是想看看R&K, BS, Gates这帮老家伙听到这话的反应...
Gates可是让GOTO走进千家万户的"罪魁祸首"之一啊...(笑)
#5
ioriliao2007-06-16 22:46
我个人认为呢.为别人打工一定是苦的了,如果在研究所搞研究那才是乐事(不以完成任务的时间期限作为条件的那种).
#6
野比2007-06-16 22:58
回复:(ioriliao)我个人认为呢.为别人打工一定是苦的...

兄弟, 你还没开始工作吧? ..你说的那种情况, 基本只能在学校里看到..
而且还是一帮激情小子自己搞业余的... 真正的课题都是有时限的.. 任务只能"延期", 而不能"无限期".
在公司有老板, 在研究所有领导.. 命苦不能怪政府..怎么都逃不掉的.
只有努力干活, 表现良好才有好果子吃..才能分到一碗稀饭喝喝..

#7
ioriliao2007-06-16 23:10
呵呵,野比兄果然经历丰富,从我的言语中就可以看出我还没有工作.
我想过了,我不会从事软件开发的这行业,确切地说,我是不会去任何
软件公司工作,或者言之过早,生活所迫我想也会的.我希望做一名教师,
因为只有
老师才很有空的,作为一名业余的程序员就行了,我想,或者只有业余
的程序员才不会业余吧.呵呵...我喜欢自由自在地搞研究.还望野比多
多指教!
#8
百年不亮2007-06-16 23:17
给别人干活就逃脱不了被疯狂压榨剩余价值的命运.有能力去外企或出国,可以看到真正的社会主义.

兄弟你具体做什么,IC的设计还是写驱动还是其它?
#9
ioriliao2007-06-16 23:23
不想给别人压榨剩余价值,自己就得压榨别人的剩余价值.
各位努力吧,尚若日后有机会,希望大家一起合作压榨别人的剩余价值!
#10
野比2007-06-17 10:44
百年兄的话在下不敢苟同...
到了国外一样的被压榨..资本主义绝对不是说说而已.
只是老外懂得笼络人才, 给的稀饭里面会多加点米, 外送一碟泡菜...偶尔赏片肉吃吃.
我现在比较少搞设计了..大概做的事..
把设计完成的东西由我跑腿最后跑出来产品..再调好送检出厂..
所以基本可以跟DHL的算同行了...(笑)
#11
I喜欢c2007-06-17 10:48
以下是引用百年不亮在2007-6-16 22:16:43的发言:
没想到你是搞单片机的,以后要向你请教了.现在往嵌入式发展很有钱途.

很多书上只是说goto不能滥用,没有说不能用.菜刀锋利切菜快,切手指也快,功能强大的东西往往容易造成大的破坏,就看使用者的驾驭能力.

说得精辟..... 值得一赞.....

#12
野比2007-06-17 10:55
以下是引用ioriliao在2007-6-16 23:23:31的发言:
不想给别人压榨剩余价值,自己就得压榨别人的剩余价值.
各位努力吧,尚若日后有机会,希望大家一起合作压榨别人的剩余价值!

希望有这一天..

#13
ioriliao2007-06-17 11:43
我想会有那么一天的,我深信...
#14
野比2007-06-17 15:04
努力! 学习! 像林锐那么NB!
#15
ioriliao2007-06-17 15:48















努力!!!!!!!==========================================================>>>
1