簡體   English   中英

在循環中中斷

[英]break in do while loop

在嵌套循環中打破時會發生什么?

假設以下代碼:

for(int x = 0; x < 10; x++)
{
    do {
        if(x == 4)
            break;
        x++;
    } while(x != 1);
}

遇到break語句,for循環或do while循環時哪個循環會退出?

break總是打破最內層的循環。

6.8.6.3

break語句終止執行最小的封閉開關或迭代語句。


如果你想要擺脫兩個循環,請在for之后使用一個標簽並使用goto跳轉

或者,如果您不想使用goto ,可以使用標志:

int flag = 0;

for(int x = 0; x < 10; x++)
{
    do {
        if(x == 4) {
            flag = 1;
            break;
        }
        x++;
    } while(x != 1);

if(flag) 
   break; // To break the for loop
}

Break將終止包含break的最近/最內層循環。 在你的例子中,break將終止do-while,並且控制跳轉回到for()循環,並簡單地啟動for()的下一次迭代。

但是,由於你在do()和for()循環中都修改了x,所以執行會有點不穩定。 一旦外部X達到5,你將產生一個無限循環。

while會斷開,for循環會繼續運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM