当while遇上了switch,如何break?

superlzdcn 2009-03-17 11:11:25
请看下面的代码:
int a = 0;
while (1)
{
switch (a)
{
case 0:
{
a = 6;
break;//这里想跳出这个while,可是跳不出去
}
break;
case 6:
{
a = 0;
break;
}
break;
default:
break;
}
}
大家有办法吗?难道要用goto?
...全文
9644 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
小小瑀 2011-04-06
  • 打赏
  • 举报
回复

bool goon =true;
while(goon){
switch(……){
case:
……
break;
case:
……
goon = false //想在这里退出
break;
default:
……
break;
}
}
bluestar2009 2010-12-21
  • 打赏
  • 举报
回复
见过这个么?

while (1)
{
if(case==0)
{
a = 0;
break;
}
if(case==6)
{
a = 6;
break;
}
if(case==8)
{
a = 8;
break;
}
}
superlzdcn 2009-05-06
  • 打赏
  • 举报
回复
是不是c标准的问题,switch和while不该公用 break?
向良玉 2009-03-17
  • 打赏
  • 举报
回复 1
可以用exit(0)
叶落寒山 2009-03-17
  • 打赏
  • 举报
回复 1
用return.

int a = 0;
while (1)
{
switch (a)
{
case 0:
{
a = 6;
return;//这里想跳出这个while,可是跳不出去
}
break;
case 6:
{
a = 0;
return;
}
break;
default:
return;
}
}
qq675927952 2009-03-17
  • 打赏
  • 举报
回复
呵呵,有时也可以 直接 return ,
pbdwadr 2009-03-17
  • 打赏
  • 举报
回复
这个程序本身逻辑有问题,看不懂是干什么用的。。。

int a = 0;
while (1)
{
switch (a)
{
case 0:
{
a = 6;
break;//这里想跳出这个while,可是跳不出去
}
break;
case 6:
{
a = 0;
break;
}
break;
default:
break;
}
}
pengzhixi 2009-03-17
  • 打赏
  • 举报
回复
你switch里面的break语句只负责跳出switch
象三楼的主意不错,为while增加个跳出的变量.
BLwei 2009-03-17
  • 打赏
  • 举报
回复
三楼的正解哈
yswlqj 2009-03-17
  • 打赏
  • 举报
回复
呵呵,来晚了,一楼三楼四楼正解,嘿嘿。要是跳出两个的话while就不能用死循环,要给个状态,就解决了
ctan 2009-03-17
  • 打赏
  • 举报
回复
不使用switch,
改用if语句
aaa123111 2009-03-17
  • 打赏
  • 举报
回复
int a = 0;
while (1)
{
switch (a)
{
case 0:
{
a = 6;
break;//这里想跳出这个while,可是跳不出去
}

case 6:
{
a = 0;
break;
}
break;
default:
break;
}
break;
}
fibbery 2009-03-17
  • 打赏
  • 举报
回复
两种方法,见下面代码的注释和增加的代码

int a = 0;
while (1) //或者在此处增加bool变量,在退出循环的case中设置为false
{
switch (a)
{
case 0:
{
a = 6;
break;//这里想跳出这个while,可是跳不出去
}
break;
case 6:
{
a = 0;
break;
}
break;
default:
break;
}
if(a==6)//增加退出循环条件
break;
}
aaa123111 2009-03-17
  • 打赏
  • 举报
回复
你那里是跳出switch;需要再break一次才能跳出while
diannaomingong 2009-03-17
  • 打赏
  • 举报
回复
int a = 0;
bool key=true;
while (key)
{
switch (a)
{
case 0:
{
a = 6;
key=false;
break;//这里想跳出这个while,可是跳不出去
}
break;
case 6:
{
a = 0;
break;
}
break;
default:
break;
}
}
breezes2008 2009-03-17
  • 打赏
  • 举报
回复
来晚了
Darkneece 2009-03-17
  • 打赏
  • 举报
回复

void foo(void)
{
int a = 0;
bool loop_out = false; //增加循环跳出标示位
while (1)
{
switch (a)
{
case 0:
{
a = 6;
loop_out = true;
break;//这里想跳出这个while,可是跳不出去
}
break;
case 6:
{
a = 0;
break;
}
break;
default:
break;
}
if(loop_out)
{
break;
}
//其他代码
}
}
xuguod20042576 2009-03-17
  • 打赏
  • 举报
回复
int a = 0;
while (1) //或者在此处增加bool变量,在退出循环的case中设置为false
{
switch (a)
{
case 0:
{
a = 6;
break;//这里想跳出这个while,可是跳不出去
}
break;
case 6:
{
a = 0;
break;
}
break;
default:
break;
}
if(a==6)//增加退出循环条件
break;
}

qqq123 2009-03-17
  • 打赏
  • 举报
回复
1.switch换成if
2.break 换成 goto 或 return.
gadx86 2009-03-17
  • 打赏
  • 举报
回复
函数里可以return,线程里貌似可以K掉线程……,方法还是很多的嘛
加载更多回复(10)

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧