Подтвердить что ты не робот

Объективный C-цикл и продолжить

Как я могу использовать оператор "break" в цикле for, который продолжает формировать указанную метку?

ех;

outer: for(int i = 0;i<[arABFBmatches count];i++){
    for(int i = 0;i<[arABFBmatches count];i++){
        //
        break _____;
    }
}

Как нарушить внешний?

4b9b3361

Ответ 1

Трудно сказать из вашего вопроса. Я бы это интерпретировал, что вы хотите пропустить остальные итерации внутреннего цикла и продолжить внешний цикл?

for (int i = 0; i < [arABFBmatches count]; i++) {
    for (int j = 0; j < [arABFBmatches count]; j++) {
        if (should_skip_rest)
            break; // let outer loop continue iterating
    }
}

Обратите внимание, что я изменил имя вашего внутреннего инварианта цикла; использование i в обоих вызывает безумие.

Если вы хотите выйти из обоих циклов, я бы не использовал goto. Я бы сделал:

BOOL allDoneNow = NO;
for (int i = 0; i < [arABFBmatches count]; i++) {
    for (int j = 0; j < [arABFBmatches count]; j++) {
        if (should_skip_rest) {
            allDoneNow = YES;
            break;
        }
    }
    if (allDoneNow) break;
}

Ответ 2

Грубо:

for(int i = 0;i<[arABFBmatches count];i++){
    for(int j = 0;j<[arABFBmatches count];j++){
        //
        goto outer_done;
    }
}
outer_done:

Objective-C не имеет помеченного перерыва.

Ответ 3

От Apple Objective-C docs:

Objective-C определяется как небольшой, но мощный набор расширений стандартный язык ANSI C.

Таким образом, break и continue могут использоваться везде, где они разрешены в C.

continue может использоваться в циклах конструкций (for, while и do/while).

break может использоваться в тех же конструкциях цикла, а также в операторах switch.

Ответ 4

'break' выведет вас из самого внутреннего цикла или переключателя. Вы можете использовать 'return' для выхода из функции в любое время. Пожалуйста, посмотрите ссылку .

Ответ 5

BOOL done = NO;
for(int i = 0;i<[arABFBmatches count] && !done; i++)
{
    for(int i = 0;i<[arABFBmatches count] && !done;i++)
    {
        if (termination condition) 
        {
             // cleanup
             done = YES;
        }
    }
}

Ответ 6

вниз голос...... Если использование goto упрощает код, тогда это будет уместно.

for (;;) 
{
    for (;;) 
    {

        break; /* breaks inner loop */

    } 

    for (;;) 
    {

        goto outer; /* breaks outer loop */
    }

} 
outer:;