TC官方合作论坛

 找回密码
 立即注册
查看: 728|回复: 2
打印 上一主题 下一主题

[讨论] 丢掉一些GOTO

[复制链接]
跳转到指定楼层
楼主
发表于 2014-7-8 10:43:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
     还记的一次用GOTO,被一个从事C语言程序员十几年的老师发现了。单独叫出去训了一顿,当然这老师一直对我很。他哪句话还一直深深的影响着我。“老板或老大,如果看到你用GOTO会直接让你打包走人!”

  至今也没明白为什么很多人不赞同用GOTO。反正不用就行了。

   TC也有保留GOTO语法。也有很多同学在用。
          自我感觉。有几种情况喜欢用到它。其中一种就是代码逻辑不是很清晰。在很多循环逻辑中。跳不出来。直接用一个<GOTO。代码去哪儿。>直接多好呀。如一个三层循环。

GOTO使用。跳出所有循环。
         size1=10000,size2=10000,size3=100000
         for(i=0;i<size1;i++)
               一层:
               if(条件==true)
                   else
               endif
                 for(j=0;j<size2;ji++)
                        二层:
                        if(条件==true)
                          else
                         endif
                        for(k=0;k<size3;k++)
                              if(条件==true)
                                     //跳出最内层
                                     GOTO 二层:
                                     //跳出第二层:
                                      GOTO 一层:
                                     //全部跳出
                                      GOTO 我出来了:
                              else
                              endif
                       endfor

                  endfor
         endfor
     我出来了:


条件使用。跳出所有循环。
         size1=10000,size2=10000,size3=100000
         for(i=0;i<size1;i++)
               if(条件==true)
                   else
               endif
                 for(j=0;j<size2;ji++)
                        if(条件==true)
                          else
                         endif
                        for(k=0;k<size3;k++)
                              if(条件==true)
                                      //跳出最内层
                                      size3=-1
                                     //跳出第二层:
                                      size3=-1, size2=-1
                                     //全部跳出
                                      size3=-1,size2=-1,size1=-1
                              else
                              endif
                       endfor

                  endfor
         endfor



上面两个例子其实都能达到同样的效果。。感觉也一样复杂度呀。
           但一个大工程。你只是做一个模块。用GOTO有可能去别人哪里。但然TC的GOTO是出不了内部函数。用条件来处理。再怎么错。也只是这个循环内部出错。
   所以不管你们用不用。反正我是不用。
回复

使用道具 举报

沙发
发表于 2014-7-8 12:21:02 | 只看该作者
用GOTO,由其是新手,会让程序乱飞,一下跳上,一下跳下,一下跳左,一下跳右,有时直接让人看得头晕。
清晰性,可读性变差,不要说别人了,就是自己过段时间来看,也不一定看懂。
回复 支持 反对

使用道具 举报

板凳
发表于 2014-7-11 12:50:25 | 只看该作者
GOTO 现在一般都是用作花指令了.....防反编汇的
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-26 12:39 , Processed in 0.169546 second(s), 22 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表