作者crazydj (0(.".)0...)
看板C_and_CPP
标题[问题] 跳出while回圈
时间Fri Mar 6 10:45:47 2009
while(1)
{
if (step<4)
{
step++;
for(i=0;i<4;i++)
{
mx=pattern2[i].x;
my=pattern2[i].y;
if((h*16+available_now.x+mx*s)<0 || (h*16+15+available_now.x+mx*s)>=x)
continue;
if((v*16+available_now.y+my*s)<0 || (v*16+15+available_now.y+my*s)>=y)
continue;
if((available_now.x+mx*s)<-7 || (available_now.x+mx*s)>7 || (available_now.y+my*s)<-7 || (available_now.y+my*s)>7)
continue;
if(map[7+available_now.y+my*s][7+available_now.x+mx*s]==1)
continue;
search_num++;
map[7+available_now.y+my*s][7+available_now.x+mx*s]=1;
read_block(fip1,x,h,v,(available_now.x+mx*s),(available_now.y+my*s),ref,16,16); // read reference block from fip1
now=0;
for(k=0;k<16;k++)
{ // computing the MAD
for(j=0;j<16;j++)
now+=(long)abs(dif[k][j]=(unsigned int)cur[k][j]-(unsigned int)ref[k][j]);
if(now>min)
break;
} // end for computing the MAD
if(now<min)
{
available_next.x=available_now.x+mx*s;
available_next.y=available_now.y+my*s;
min=now;
}
} // end for one old candidate's check
if(available_now.x==available_next.x && available_now.y==available_next.y )
{ //问题点
available_now.x=available_next.x;
available_now.y=available_next.y;
step=1;
break;
}
available_now.x=available_next.x;
available_now.y=available_next.y;
}
}
我的问题是,在问题点那个if判断式内的break,为何不能break掉这个while???
那要怎麽做才能在这个if判断式为真情形,跳离这个while呢??
烦情懂的人指教!感激不尽`Orz...
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.64.128.54
1F:推 MacPerson:加break只是回到上一层,要完完全全跳出 我目前想到的是 03/06 11:02
2F:→ MacPerson:加计数器~ 你参考 03/06 11:03
3F:推 buganini:因为你只会break掉那个for 可以放个flag检查 或用goto 03/06 11:09
4F:→ crazydj:恩!只好用goto了~~谢谢各位 03/06 14:56