熟悉switch的高手请进:在switch中的continue和break的区别?
假如有这么一个循环:
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




