看板 C_and_CPP 關於我們 聯絡資訊
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
MacPerson:加break只是回到上一層,要完完全全跳出 我目前想到的是 03/06 11:02
MacPerson:加計數器~ 你參考 03/06 11:03
buganini:因為你只會break掉那個for 可以放個flag檢查 或用goto 03/06 11:09
crazydj:恩!只好用goto了~~謝謝各位 03/06 14:56