2017-02-23 28 views
-2

Скажем, у меня есть такой код:Как «продолжать» действовать в «за», что в другом «за»?

for (...;...;...){ 
    for (...;...;...){ 
      if (...){ 
       ... 
       continue; 
       ... 
      } 
     } 
} 

(«...» некоторая часть кода, на самом деле не важно, что)

Когда программа получает на „продолжить“ , он возвращается к внешнему или внутреннему?

+1

внутренний для петли. –

ответ

1

Это выглядит следующим образом

for (...;...;...){ 
    for (...;...;...){ 
      if (...){ 
       ... 
       goto continue; 
       ... 
      } 
     continue:; 
     } 
} 

В соответствии с C Standard (6.8.6.2 Продолжить заявление)

2 продолжения, утверждение вызывает переход к петлевой части продолжения наименьшее прилагаемое заявление об итерации; то есть до конца корпуса петли. Более точно, в каждом из утверждений

while (/* ... */) 
{ 
    /* ... */ 
    continue; 
    /* ... */ 
    contin: ; 
} 

do 
{ 
    /* ... */ 
    continue; 
    /* ... */ 
    contin: ; 
} while (/* ... */); 

for (/* ... */) 
{ 
    /* ... */ 
    continue; 
    /* ... */ 
    contin: ; 
} 

если оператор продолжит показано не находится в закрытом итерационноге заявления (в этом случае он интерпретируется в рамках этого заявления), оно эквивалентно Гото контина ;.

+0

Так что, если бы было еще одно «для», это пошло бы к самому внешнему? Или вы имели в виду, что программа продолжается там, где вы написали «продолжить»? –

+0

@AniaZdanowicz Просмотреть обновленное сообщение. –

+0

Хорошо, спасибо! –

2

Внутренний. Это всегда самая внутренняя петля. Многие языки дают вам способ «перерыв 2»/«продолжить 2», чтобы перепрыгнуть на два уровня и продолжить внешний.

+0

Итак, продолжая, вы идете на вершину «пока» или «за», это «самое близкое» вам, «самое внутреннее» это может быть? –

+1

Ближайший к вам, да, точно. Вы можете начать движение вверх с помощью своего каретки из «продолжения», и первый цикл, на который вы нажмете, будет прыгать. – dkellner

+0

большое спасибо! –