[問題] 跳出while迴圈

看板C_and_CPP作者 (0(.".)0...)時間15年前 (2009/03/06 10:45), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
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

03/06 11:02, , 1F
加break只是回到上一層,要完完全全跳出 我目前想到的是
03/06 11:02, 1F

03/06 11:03, , 2F
加計數器~ 你參考
03/06 11:03, 2F

03/06 11:09, , 3F
因為你只會break掉那個for 可以放個flag檢查 或用goto
03/06 11:09, 3F

03/06 14:56, , 4F
恩!只好用goto了~~謝謝各位
03/06 14:56, 4F
文章代碼(AID): #19i8vXhQ (C_and_CPP)