首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 用goto退出多重循环是一件很丢人的事吗?
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • visame
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-01-27 02:12:04 楼主
    #########寻找更好的推出多重循环的方法。#################

    比如多重for循环,如果不用goto退出,可以用下面比较复杂的方法:
    int  leave=0; 
      for(;!leave;) 
      { 
      for(;!leave;) 
      { 
      for  (;!leave;)     
      { 
      for(;!leave;) 
      { 
      leave=1; 
      } 
      } 
      } 
      } 
    10  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hityct1
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 08:50:291楼 得分:0
    可以采用异常。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • healer_kx
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 10:52:412楼 得分:0
    当然是最合适的方式了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Kenmark
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 11:11:023楼 得分:0
    不同情况可以使用不同的流控制,辅以注释可以使得goto很明了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xi_aowo_happy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 11:16:064楼 得分:0
    goto会破坏程序的结构,建议最好别用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • A_B_C_ABC
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 11:20:425楼 得分:0
    退出多重循环,我赞成使用goto.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • akirya
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 6

    发表于:2008-01-27 11:42:256楼 得分:0
    我同意使用goto
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ltc_mouse
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-01-27 12:12:477楼 得分:0
    原以为goto真的被抛弃了,但看了些WinCE的Sample codes,发现几乎每个函数在出错时都用goto跳转~
    也算一种相当优雅的风格,:)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Mnky
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-01-27 12:20:048楼 得分:0
    这种情况,每次还要判断,不如直接goto。这种情况是goto是唯一好用的地方了,你再不用就浪费了,呵呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • doon
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 12:42:599楼 得分:0
    goto可以说是专门为这种情况设计的。其实,无论是goto也好还是结构也好,没有什么丢人不丢人之说,只要好就完全可以拿来使用。
    当然,goto也有自己的缺点,乱用是不好的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cangwu_lee
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

    发表于:2008-01-27 13:08:1010楼 得分:0
    支持ING
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangyong0921
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 13:08:1211楼 得分:0
    goto只是会破坏程序的结构,并不表明就不能用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • majia_of_run
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 13:34:0712楼 得分:0
    真遇到这种情况,我会把多重FOR放到一个函数里,要退出时只要return即可
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shizhiqing2003
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 15:09:3613楼 得分:0
    当然可以了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kgddqypm_wkl
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 16:34:5314楼 得分:0
    多重循环这种情况使用GOTO是聪明的……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Chiyer
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      3

      3

    发表于:2008-01-27 16:58:5315楼 得分:0
    用 goto 吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xdolt
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 17:26:2716楼 得分:0
    我就喜欢用goto,飘逸!帅!怎么了?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • iambic
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      3

      3

    发表于:2008-01-27 18:49:3217楼 得分:0
    我看还是挺丢人的。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fetag
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 18:57:1118楼 得分:0
    我就喜欢用goto,飘逸!帅!怎么了?
    ==================

    严重同意!我也超级喜欢用goto...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lin_style
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 19:15:4619楼 得分:0
    goto 咋用?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Vitin
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 19:25:5520楼 得分:0
    用goto中途跳出多重循环确实是合适的方法。与其相比,在每层循环上做判断显得很沉重。

    但是,或许需要考虑一下为什么会出现必须使用goto的情况。goto是和结构化编程思维相背的,如果出现必须使用goto的情况,很可能意味着设计本身并没有按照结构化编程来做。所以这不仅是一个程序实现问题,更是一个设计问题。例如,当出现中途跳出多重循环的情况时,不是说不应该用goto,而是说中途跳出的情况本身就不应该出现——假如你是结构化编程的信徒,你需要修改的是设计,而非代码。简而言之,goto和xxx_cast之类的一样,是一种警告,警告你可能违背了某种设计原则。

    当然,这并不是说goto不好。因为结构化编程好不好是另一个问题了。如果你并不虔诚于结构化编程,也就没必要对goto敬而远之了,就象汇编程序者不可能避开jump一样。goto是一个标志,它表明C语言在支持结构化编程风格的同时也支持非结构化的编程风格;而C++继承了C语言的这个特性。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • steedhorse
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      3

      4

    发表于:2008-01-27 19:39:3721楼 得分:0
    当然不是啊。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zenny_chen
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 19:48:5122楼 得分:0
    巧妙地利用goto可以将复杂的事情变得简单。滥用goto会将简单的问题搞得复杂。
    所以在C/C++中使用goto并不是不好。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • citywanderer2005
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 22:34:2623楼 得分:0
    linux内核中使用goto的语句太多了!
    只要使用得当,还是可以用它的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • michney
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 22:56:3624楼 得分:0
    goto真的好用,但仅限于错误处理,和多重循环
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • FALLEAFCSHARP
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-27 22:59:4325楼 得分:0
    汇编里只有JMP。用个GOTO不丢人。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • blh
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 5

      3

    发表于:2008-01-27 23:14:1526楼 得分:0
    用goto没什么不好,一条语句可以省去很多判断,只要你不要乱使用就行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hland
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 05:17:0727楼 得分:0
    当然要使用goto啦,绝对效率高,书上叫人别用,那是因为团体合作的原因,自己写自己用的,你就尽量多用吧,越是小的程序,你就越是该用,越大的程序,为避免以后连自己都看不懂,最好别用.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiongzhb
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 13:28:1828楼 得分:0
    goto是最好的选择,只是我们公司明文规定不准使用goto
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • BluntBlade
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 13:31:4829楼 得分:0
    不应该讨论用不用,而应该讨论怎么用,怎么不滥用。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天