2016-04-09 2 views
0

я потребовал разъяснения по поводу заявлений перерыва в следующем фрагменте кода:Вырвавшись из вложенного цикла в C

  1. Когда управление достигает разрыва с комментарием «номер 1», то внутренний цикл возбужденными и управление переходит к следующему оператору if с флагом. Это верно?

  2. Когда управление достигает второго оператора break, функция завершается. Это правильно?

    void compute(int n, int numJ) { 
    
    int j, jCount = 0, init, base, check, added = 0, flag = 0; 
    
    init = pow(10, (n - 1)) + 1; 
    
    for(j = 0; j < pow(2, (n - 2)); j++) 
    { 
        check = init + 10 * convert(j); 
    
        for(base = 2; base <= 10; base++) 
        { 
         added = decValue(check, base); 
    
         if(!isPrime(added)) 
          flag += 1; 
         else 
          break; //number 1 
        } 
    
        if(flag == 9) 
        { 
         display(check); 
         jCount += 1; 
        } 
    
        if(jCount == numJ) 
         break; //number 2 
    } 
    } 
    

ответ

1

Оператор пролом завершает выполнение ближайшего объемлющего делать, для, переключатель, или в то время как заявление, в котором он появляется. Элемент управления переходит к оператору, который следует за завершающим оператором.

Source

Таким образом, в данном примере вы предоставили, если (jCount == numJ) == true, то да, родительский цикл должен быть прерван из.

0

Да, второй оператор break вырвется из внешнего контура и достигнет конца функции.

Смежные вопросы