CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

GOTO...请告诉我这里不使用GOTO的方法

楼主madmanahong(疯子阿虹)2004-07-04 18:12:09 在 VC/MFC / 基础类 提问

for   (   int   i=0;i<   100;   i++   )  
    for   (   int   j=0;j<   100;   j++   )  
    {  
          if   (   martix[i][j]   ==   800   )    
                    goto   found;  
    }  
   
   
  found:  
      return;  
   
  thx.... 问题点数:0、回复次数:24Top

1 楼lianglp(寻找黄金分割点)回复于 2004-07-04 18:15:14 得分 0

for   (   int   i=0;i<   100;   i++   )  
    for   (   int   j=0;j<   100;   j++   )  
    {  
          if   (   martix[i][j]   ==   800   )    
            {                  
                  i   =   100   ;  
                  break   ;  
              }  
    }  
  Top

2 楼zzhe79()回复于 2004-07-04 18:25:43 得分 0

break跳出循环体;continue开始下一个循环Top

3 楼xta(小茹)回复于 2004-07-04 18:32:16 得分 0

bool   b=false;  
  for   (   int   i=0;i<   100   &&   !b;   i++   )  
    for   (   int   j=0;j<   100   &&   !b;   j++   )  
    {  
          if   (   martix[i][j]   ==   800   )    
                    b=true;  
    }  
  这种方法就是消除goto语句的通用方法!  
  Top

4 楼pomelowu(羽战士)回复于 2004-07-04 18:46:50 得分 0

for   (   int   i=0;i<   100;   i++   )  
    for   (   int   j=0;j<   100;   j++   )  
    {  
          if   (   martix[i][j]   ==   800   )    
                    return;  
    }  
  Top

5 楼pomelowu(羽战士)回复于 2004-07-04 18:47:48 得分 0

goto真的不是洪水猛兽……不要仇视它,用的时候小心一点就行了!!Top

6 楼GOTO_2002(mmmttt)回复于 2004-07-04 18:58:05 得分 0

^^      
   
  UpUp~~Top

7 楼bluebohe(薄荷)回复于 2004-07-04 18:59:10 得分 0

不使用goto的一个方式是将一部分代码放进入到一个函数中,在函数中使用returnTop

8 楼skyfine(柳荣宏)回复于 2004-07-04 19:13:03 得分 0

bool   b=false;  
  for   (   int   i=0;i<   100   &&   !b;   i++   )  
    for   (   int   j=0;j<   100   &&   !b;   j++   )  
    {  
          if   (   martix[i][j]   ==   800   )    
                    b=true;  
    }  
  加上这个也许就满足了你的要求  
  if(!b)  
  {  
  return;  
  }  
   
   
   
  Top

9 楼2c18(我是一只菜菜鸟)回复于 2004-07-04 19:16:23 得分 0

学习Top

10 楼madmanahong(疯子阿虹)回复于 2004-07-04 19:57:02 得分 0

这段代码只是一个小小的片断~  
  加入我在这个函数里面要进行很多个析构,再或者说这个循环之后还有100条语句要执行~  
   
   
  //---------  
  for   (   int   i=0;i<   100;   i++   )  
    for   (   int   j=0;j<   100;   j++   )  
    {  
          if   (   martix[i][j]   ==   800   )    
                    goto   found;  
    }  
   
  //   do   something..  
   
  found:  
   
  //   do   a   lots   of   something...  
   
      return;  
   
   
  这里还有必要消除这个goto吗?  
  我怎么感觉没有必要呢?  
  因为我看见过MS的代码里面有很多goto,并且在很多高手的代码,譬如说:quake2引擎中就充斥着大量的goto.  
  然而我们的组内代码规范书上说不要使用goto。  
  怎么办?  
   
  难为   啊~  
   
  有有经验的来传授吗???Top

11 楼heavenchang(学习ing)回复于 2004-07-04 20:00:00 得分 0

goto很可怕么,不用滥用就是了,Top

12 楼lambochan(打杂)回复于 2004-07-04 20:08:28 得分 0

goto就是goto,从深层循环跳出就是它最大的优点,其它的不可比拟..  
  难道认为在循环体内加N个条件break,比一个goto要易读么?  
  Top

13 楼lovenoend(有容乃大)回复于 2004-07-04 20:09:08 得分 0

1、这里用GOTO是完全可行的  
   
  2、也可这么:  
  for   (   int   i=0,   j=0;   i<100*100   &&   martix[i][j]!=800;   ++i,   j=i%100);  
   
   
  Top

14 楼jink(毁人不倦)回复于 2004-07-04 20:18:06 得分 0

尽信书不如无书  
   
  是这么说的吧,我记性不好,汗一个...Top

15 楼ColdMooon(天上有个太阳)(水中有个月亮)回复于 2004-07-04 21:22:29 得分 0

尽信书不如无书,尽信人不如杀人。Top

16 楼blueclu0281(努力)回复于 2004-07-04 21:40:29 得分 0

使用一个函数就好了Top

17 楼daienming(键盘上的蛤蟆)回复于 2004-07-04 21:55:50 得分 0

goto   ??反正我从来没用过,学习了,嗬嗬!Top

18 楼nlstone(天外流星)回复于 2004-07-04 22:15:07 得分 0

为什么有goto不用?    
   
  不用白不用:)Top

19 楼pomelowu(羽战士)回复于 2004-07-04 23:05:08 得分 0

然而我们的组内代码规范书上说不要使用goto。  
   
   
  ---------------------------------  
   
  如果你不能够修改代码规范书,那么请不要使用goto。  
   
  如果你能够修改代码规范书,那么这种情况下就可以使用goto,只不过要小心,尤其是内存的分配上的问题。  
   
  还是那句话,goto不是洪水猛兽。存在即合理,不然要它来做甚。至是它太容易导致错误了,所以要谨慎使用,仅此而已。Top

20 楼countryboy(沉淀)回复于 2004-07-04 23:38:26 得分 0

用goto很正常啊`!~!~!~  
  为什么不能用???小心点就是了`!Top

21 楼whoo(谁)回复于 2004-07-05 00:29:23 得分 0

呵呵,这个地方goto要用得理直气壮。    
   
  用文学的话说就是“不以词害意”。Top

22 楼programfanny()回复于 2004-07-05 05:12:47 得分 0

GOTO在编译后和循环、条件、break,continue   等语句一样,都是(包含)JMP指令的,因此实质是一回事,恰当地使用可提高程序的效率。但也可能带来了可读性方面的副作用。因此说编程序是一种选择与权衡。Top

23 楼elssann(睡睡裤)回复于 2004-07-05 09:13:10 得分 0

for   (   int   i=0;i<   100;   i++   )  
    for   (   int   j=0;j<   100;   j++   )  
    {  
          if   (   martix[i][j]   ==   800   )    
                    return;  
    }  
   
   
  found:  
      return;  
   
  /////////////////////////////////////  
  既然found后面是return,为什么不直接returnTop

24 楼elssann(睡睡裤)回复于 2004-07-05 09:14:21 得分 0

前面朋友提到的b   =   TRUE可以解决  
   
  刚才回的没看清楚Top

相关问题

  • 告诉我关于用SPY++的功能和使用方法
  • 谁能告诉我关于<<和>>的使用方法啊?????
  • 菜鸟问题:可以告诉我 winapi 的EnumJobs使用方法吗?
  • 我受不了msdn了,谁能告诉我有效的使用方法。
  • 我受不了msdn了,谁能告诉我有效的使用方法。
  • 我受不了msdn了,谁能告诉我有效的使用方法。
  • 我受不了msdn了,谁能告诉我有效的使用方法。
  • 谁能告诉我这两种方法在使用时有什么不一样??
  • 求教使用ssl的具体方法,请各位师傅告诉我!
  • escape使用方法

关键词

  • goto

得分解答快速导航

  • 帖主:madmanahong

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo