在C语言中跳出多重循环

推荐如何在C语言中跳出多重循环?——C足够强大,唯一限制你的就是思维

问题的提出:如何快速跳出多重循环,例如一个数组,如果要检查数组内有无相同的变量,如果有就置标志跳出。

#define MAX_SIZE 4
UINT i,j,nBits[MAX_SIZE];
BOOL bValid;

bValid = FALSE;
for(i = 0; i < MAX_SIZE; i++)
{
for(j = (i + 1); j < MAX_SIZE; j++)
{

if(nBit  == nBit[j])

{


bVlid = TRUE;


break;

}
}


????;//How to break all the loops??,it's a problem
}
具体的解决办法如下,当然有很多,这儿只是取典型的3种而已。

#define MAX_SIZE 4
UINT i,j,nBits[MAX_SIZE];
BOOL bValid;

bValid = FALSE;
for(i = 0; i < MAX_SIZE; i++)
{
for(j = (i + 1); j < MAX_SIZE; j++)
{

if(nBit == nBit[j])

{


bVlid = TRUE;


GOTO JUMP_HERE;

}
}
}


...
JUMP_HERE:


...

但是很多人都不喜欢用GOTO,因为C语言教材里面写着,慎用,和指针一样这些都是双刃剑,练习梅超风的18节鞭子不误抽自己几下是练不成的。

#define MAX_SIZE 4
UINT i,j,nBits[MAX_SIZE];
BOOL bValid;

bJumpFlag= FALSE;
for(i = 0; i < MAX_SIZE; i++)
{
for(j = (i + 1); j < MAX_SIZE; j++)
{

if(nBit == nBit[j])

{


bVlid = TRUE;


break;

}
}


if(bVlid
== TRUE)


break;
}

这个办法是比较平实的招数,实用不华丽。但是如果循环更多一些,或者是判断跳出逻辑更复杂一些,看起来可能就有点不爽了。

#define MAX_SIZE 4
UINT i,j,nBits[MAX_SIZE];
BOOL bValid;

bValid = FALSE;
for(i = 0; i < MAX_SIZE; i++)
{
for(j = (i + 1); j < MAX_SIZE; j++)
{

if(nBit == nBit[j])

{


bVlid = TRUE;


i = MAX_SIZE;


break;

}
}
}

最简洁的方式,华丽,高效而且实用,眼前一亮吧?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值