菜鸟问:在C++中使用goto语句到底有什么弊端?

gkd_0000 2006-07-06 01:53:13
我试着写了一些程序,其中使用了goto语句,并没有觉得使用goto语句有什么不好,
(当然,这些程序都是比较简单.) 为什么书上说要避免使用goto语句.可否举出一些例子说明使用goto语句的弊端.
...全文
454 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
gkd_0000 2006-07-07
  • 打赏
  • 举报
回复
TO:bing_huo(我是一个演员!)

"程序执行流不清晰,debug和维护成本高",
我是初学者,不明白这句话的意思,可否解释一下,谢谢!
LuoMuFeng 2006-07-07
  • 打赏
  • 举报
回复
致 xxyyboy(第一号伤心人):

如果初始化被goto语句跳过,是会引起编译错误的。这一点不用担心会有隐患。
gkd_0000 2006-07-07
  • 打赏
  • 举报
回复
这个问题还需要自己以后去体会,谢谢大家给了我宝贵的意见和启发,只是分太少,还望不要见怪
gkd_0000 2006-07-07
  • 打赏
  • 举报
回复
这个问题还需要自己以后去体会,谢谢大家给了我宝贵的意见和启发,只是分太少,还望不要见怪
Oversense 2006-07-07
  • 打赏
  • 举报
回复
goto 挺好,只要自己不迷糊
我啃 2006-07-07
  • 打赏
  • 举报
回复
goto 的使用对于程序的可读性降低很多,不容易看懂,不容易看清!
但是低级的内核级别的东西使用是家常便饭,因为要很好地控制程序流以及跳出复杂的嵌套循环,看了经典的unix内核的printf()就知道了
lddLinan 2006-07-07
  • 打赏
  • 举报
回复
这么说吧,如果你的代码release后就一直保持close状态,不需要扩展维护。那么你随便用什么都可以,甚至部分使用汇编。但是如果你的代码需要扩展,需要不断的改动,那你应该尽量使自己的代码清晰易懂,这样负责维护的人(可能就是你自己)的负担回轻很多。

个人觉得goto这样的跳转语句是语言发展的中间产物,他应该继续被包装起来,不知道以后会不会出现break(n),continue(n)...这样的语法
powersuite 2006-07-06
  • 打赏
  • 举报
回复
少用,但不是禁用
用的巧处,程序自然简洁
fdimim 2006-07-06
  • 打赏
  • 举报
回复

你试试写个大点的循环多点的程序,把所有能用goto替换的地方,全用goto,通过放大,来体会下。
KenYuan2016 2006-07-06
  • 打赏
  • 举报
回复
goto 语句.只是用的不好会带来很多问题。
最大的优点是可以从一堆欠套的循环中一下子跳出来。不必想那么多的条件欠套.
缺点是 在goto语句里面的东西,如果被跳过,可能初始化就被跳过了,导致出现程序bug却很难找到.
用goto语句前后看清楚就ok了。
zhgwbzhd 2006-07-06
  • 打赏
  • 举报
回复
goto对于初学者来说,使用不好就会出问题。
对于经验比较丰富者,当然会使用。

就像在学校老师都会说你要把程序写的简单点,容易理解。
实际上我看过好多程序,他们故意写进了很多垃圾代码,就是为了增加别人的阅读困难和反编译困难。

这个东西初学最好别轻易使用,真枪真刀的练时,恐怕就要用上了。
klkkklkl 2006-07-06
  • 打赏
  • 举报
回复
自己去试下就知道 别听别人胡说 包括那个谁
lbing7 2006-07-06
  • 打赏
  • 举报
回复
TCPL里面只在跳出多层循环里面建议使用,其它地方最好不用:

for ()
{
for ()
{
if () goto L..;//直接跳出
}
}

L:...
lbing7 2006-07-06
  • 打赏
  • 举报
回复
TCPL里面只在跳出多层循环里面建议使用,其它地方最好不用:

for ()
{
for ()
{
if () goto L..;//直接跳出
}
}

L:...
LuoMuFeng 2006-07-06
  • 打赏
  • 举报
回复
上面的“别人”要改为“别用”。
不得不再说一次,CSDN不能修改帖子,真是太不方便了。
LuoMuFeng 2006-07-06
  • 打赏
  • 举报
回复
没什么弊端利端,该用的时候就用,不该用的时候就别人。
我觉得讨论这样的问题实在是没有意义。
bing_huo 2006-07-06
  • 打赏
  • 举报
回复
程序执行流不清晰,debug和维护成本高,并且goto实现的功能基本都能用循环或条件语句实现

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧