TC官方合作论坛

标题: 丢掉一些GOTO [打印本页]

作者: B哥    时间: 2014-7-8 10:43
标题: 丢掉一些GOTO
     还记的一次用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是出不了内部函数。用条件来处理。再怎么错。也只是这个循环内部出错。
   所以不管你们用不用。反正我是不用。

作者: tempbb1234    时间: 2014-7-8 12:21
用GOTO,由其是新手,会让程序乱飞,一下跳上,一下跳下,一下跳左,一下跳右,有时直接让人看得头晕。
清晰性,可读性变差,不要说别人了,就是自己过段时间来看,也不一定看懂。
作者: b44412545    时间: 2014-7-11 12:50
GOTO 现在一般都是用作花指令了.....防反编汇的




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1