CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

熟悉switch的高手请进:在switch中的continue和break的区别?

楼主ScorpioZZR(小天使)2003-08-03 13:22:28 在 C/C++ / C语言 提问

假如有这么一个循环:  
   
  while   (...)  
  {  
  ...  
  switch(n)  
  {  
  case   0:  
  ...  
  continue;/*这里用break代替的话有和不同?*/  
  case   1:  
  ...  
  }  
  n++;  
  }  
   
  ==========  
  我知道它们的区别是:continue用以结束本次循环,而break则结束所在循环体。  
  但是……我这里,有点迷糊了。  
  如果用continue到底是结束switch还是结束了while?这里若用这个continue会否执行到n++再进入循环?还是跳过n++?  
  如果用break到底是结束switch还是结束了while?这里若用这个continue会否执行到n++再进入循环?还是跳过n++?  
  有时一个程序(如下)里有一沓的循环和判断,我会搞不清,到底那个break是跳出if呢?还是for?还是while?  
  while()  
  {  
  for   (...)  
      if(...)  
          break;//continue;  
  }  
   
  如果这时还有个switch,见下:  
  while()  
  {  
  for   (...)  
      if(...)  
        {   switch(..)  
            {  
                  case   1:break;/*continue;*/  
            }  
            k--;  
          }  
  }  
   
  那到底是跳出哪个?  
  break跳出哪个咚咚?会去执行k--吗?continue又会结束哪里从哪里开始继续执行呢?它又是否会去接触k--呢?  
   
  总之这种循环控制嵌套一多,我就不知道了……  
  (详细解答者一次性重赏10分) 问题点数:10、回复次数:19Top

1 楼vsfan(窘)回复于 2003-08-03 13:46:37 得分 0

会  
  continue   在这和break的作用一样Top

2 楼Tangyongkang(匆匆)回复于 2003-08-03 13:48:32 得分 0

同意楼上的。switch本身也相当于一个小循环。在那里continue   和break   会达到同样的功能。  
  Top

3 楼bluei(蓝之我)回复于 2003-08-03 13:51:07 得分 2

对于最后这段程序:  
  break跳出switch,继续k--;  
  continue跳出对for有效,也就是不执行本次循环的k--;  
   
  结论:continue只对直接包含它的循环体有效(也就是for,while,   而switch{}中的不算循环体);而break有效的是直接包含它的for,while,switch块。Top

4 楼soyan(埋伏十年)回复于 2003-08-03 14:04:40 得分 0

效果是一样的,break是中止break前面的程序。而continue是提前结束前面的程序,也就是可用在一个循环体里所以在上面出现会出现相同的效果。Top

5 楼bluei(蓝之我)回复于 2003-08-03 14:07:50 得分 1

给个证据吧,唉!  
  #include<stdio.h>  
  void   main()  
  {  
  int   flag=0;  
  for(int   j=0;   j<2;   j++)  
  {  
  if(j==0)  
  {  
  switch(j)  
  {  
  case   0:   continue;  
  }  
  flag=1;  
  }  
  }  
  printf("   flag:%d\n",flag);  
  }  
   
  输出:  
    flag:0  
   
  如果代码为:  
    case   0:   break;  
  输出:  
    flag:1  
  Top

6 楼leialen(阿伦)回复于 2003-08-03 14:18:18 得分 1

#include   <stdio.h>  
   
  void   main()  
  {  
  int   flag   =   0;  
  int   j   =   0   ;  
  for(j=0;   j<2;   j++)  
  {  
  if(j==0)  
  {  
  if(j==0)  
  {  
    continue;  
  }  
  flag=1;  
  }  
  }  
  printf("   flag:%d\n",flag);  
  }  
  输出:  
    flag:0  
   
  如果代码为:  
      break;  
  输出:  
    flag:0  
   
  Top

7 楼leialen(阿伦)回复于 2003-08-03 14:20:28 得分 0

比较一下就懂了Top

8 楼ScorpioZZR(小天使)回复于 2003-08-03 14:56:08 得分 0

雷·阿伦,您老人家有意思!  
  我是佩顿阿,你好哈哈Top

9 楼bm1408(向va_list学习~不用VC好多年~)回复于 2003-08-03 15:02:13 得分 0

up!Top

10 楼bluei(蓝之我)回复于 2003-08-03 15:09:08 得分 0

^_^  
  从你的代码谁能看出break/continue的区别呀,leialen(阿伦)哥?  
  等着你回复http://expert.csdn.net/Expert/topic/1804/1804338.xml?temp=.56625呢!Top

11 楼bahanzo1(绯雨流烟)回复于 2003-08-03 15:17:47 得分 0

两者的作用在你给出的程序里面是一样的  
  Top

12 楼pengzhenwanli(紫气日盈)回复于 2003-08-03 17:26:25 得分 4

如果单纯是switch语句是根本不能用continue的。只能使用break;  
  #include   <iostream>  
  using   namespace   std;  
  void   main()  
  {  
   
   
  int   a   =   0;  
   
  while(   a   <   10   )  
  {  
  cin   >>   a;  
  switch(   a   )  
  {  
  case   1:    
  cout   <<   "a   =   1"   <<   endl;  
  continue;  
  case   2:  
  cout   <<   "a   =   2"   <<   endl;  
  break;  
  default:  
  cout   <<   "default"   <<   endl;  
  break;  
  }  
  cout   <<   "bottom"<<   endl;  
  }  
  }  
   
  你运行一下估计会明白Top

13 楼ScorpioZZR(小天使)回复于 2003-08-03 17:47:47 得分 0

哦,pengzhenwanli,原来还有这么回事阿,又学了点了~~~  
   
  大家转去  
  http://expert.csdn.net/Expert/topic/2104/2104070.xml?temp=.8940851  
   
  吧!这个准备结贴咯~~Top

14 楼yzb1000(zealot)回复于 2003-08-03 17:50:11 得分 0

我的理解continue是用在循环中的,switch不属于循环的,它应该和if一样是选择语句。我没有TC,有的同志们运行一下不就知道了?Top

15 楼loyyer(我爱C++)回复于 2003-08-03 18:17:59 得分 0

break用于跳出当前循环(注意“当前”)和switch语句。而continue则是结束当前的本次循环(注意“当前”),跳转到下一次循环的条件判断处,并准备开始下一次循环(注意“准备”)。Top

16 楼Mephisto_76((望美人如梦))回复于 2003-08-03 19:12:03 得分 0

break   就是从一个循环体里直接跳到循环体的外边,不管这是它在多深的循环中,cuntinue则是它后边的语句不再执行,让循环条件变量增加或者减少,进入下一次循环判断。Top

17 楼Cybergate()回复于 2003-08-03 19:27:50 得分 1

switch只能和break配,根本就不能有continue。  
   
  至于你那个程序可以有continue,是因为外面有一层循环,你的continue是属于外层循环的,而不属于switch块。continue“在”switch里面只是假象。Top

18 楼Cybergate()回复于 2003-08-03 19:29:23 得分 1

而break就不一样了,switch   和   break   本来就可以配对的,也就是说你的程序中break隶属于switch块,而改成continue则属于循环块。两者的意义可谓是天壤之别Top

19 楼ScorpioZZR(小天使)回复于 2003-08-03 22:27:09 得分 0

谢谢大家,非常开心,看过你们的回复我明白了,提前结贴,不过我分不多没照顾到的下次补偿Top

相关问题

  • switch中一个case结束后用continue 和用break有区别吗?
  • 请问if与switch case的区别?
  • 请问有HUB和 Switch 有什么区别?
  • c++和c#中的switch的区别怎么解决
  • router,hub,switch用于几部电脑联网用时的区别
  • 区别
  • 区别?
  • 区别?
  • 区别?
  • 区别?!

关键词

  • 循环
  • 执行
  • 循环体
  • continue
  • switch
  • 跳出
  • break
  • 结束
  • 程序
  • 有效

得分解答快速导航

  • 帖主:ScorpioZZR
  • bluei
  • bluei
  • leialen
  • pengzhenwanli
  • Cybergate
  • Cybergate

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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