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会有什么效果???
谢谢!那我稍后调试一下!
但是现在我比较纠结的是这样写的两个break是不是会有退出两层的效果?请各位大神最好说的详细点,谢谢!
那为什么还要这样写呢?
追答这个代码估计是写的人写的有问题,而且确实第二个不会起作用,因为第二个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
足够证明我的解释了