C语言中连续使用两个break会有什么效果?

if((minimum[i]>=nodes.nodeitem[cnode].min[i])&(maximum[i]<=nodes.nodeitem[cnode].max[i]))
{
diff=(1+maximum[i])-minimum[i];
for(r=1;r<=(a[i]+1);r=r*2)
{
if(diff<=r)
{
diff=r;
break;
break; //两个break会有什么效果?????
}
}

上面的两个break会有什么效果???

只有第一个会有作用。因为当运行到第一个的时候,就已经退出了for循环,第二个根本 不会用到。
这是个冗余代码。
你可以调试一下,把第二个注销,看程序功能有没有异常,如果没有,就直接注销就可以了。追问

谢谢!那我稍后调试一下!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-26
一个break可以推出一个循环
2个可以推出2层循环追问

但是现在我比较纠结的是这样写的两个break是不是会有退出两层的效果?请各位大神最好说的详细点,谢谢!

第2个回答  2014-08-26
只有第一个会起作用追问

那为什么还要这样写呢?

追答

这个代码估计是写的人写的有问题,而且确实第二个不会起作用,因为第二个break也是内层循环的一部分,当第一个break起作用的时候,直接跳出内层循环。给你个代码作为证据:

#include

int main()
{
int i,j;
for(i=0;i<6;i++)
for(j=0;j<3;j++)
if(j == 1)
{
break;
break;
}
printf("i=%d j=%d\n",i,j);
return 0;
}
这个代码输出结果是i=6 j=1

说明当第一个break起作用的时候,只是跳出了内层循环,假设第二个break起作用的话,在i=0,j=1的时候,就彻底退出循环,输出结果是i=0,j=1但是实际输出结果是i=6 j=1
足够证明我的解释了

本回答被提问者采纳
相似回答