Об операторе break в программировании на c и завершении цикла

#c #loops #if-statement #switch-statement #break

#c #циклы #if-оператор #switch-statement #break

Вопрос:

У меня есть сомнения относительно break оператора в этой программе.
Технически break оператор завершает цикл, в котором он представлен, но в этой программе break он находится внутри if оператора.
Итак, здесь break следует только завершить if оператор, верно? Но это также завершает do-while оператор.
Извините, если я спросил что-то не так. Я новичок в программировании

 #include <stdio.h>

int main()
{
    int count;
    char response;

    for (count = 1; count <= 100; count  )
    {
        printf("count = %dn", count);
    
        printf("enter y to continue or any other key to quit");
    
        scanf(" %c", amp;response);
    
        if (response != 'y')
            break;
    }

    printf("thank you!n");
    return 0;
}
 

Комментарии:

1. if не может быть «прекращено». break «завершит» самый внутренний цикл или switch ... case

2. break for Теминизировал цикл, а не блок if кода. Аналогично с while и do ...while , а также со switch случаем, который не является циклом.

3. Можете ли вы представить КАКОЙ-ЛИБО случай, когда break, который работает так, как вы думаете, был бы полезен? 😉

Ответ №1:

В соответствии со стандартом C (6.8.6.3 Оператор break)

2 Оператор break завершает выполнение наименьшего заключающего оператора switch или итерации.

Этот оператор break в этом операторе if

 if (response !='y')
    break;
 

завершает выполнение оператора enclosing for .

Вы можете представить его действие следующим образом

 for (count=1;count<=100;count  ){
    //...    
    if (response !='y')
    goto L1;
}
L1:
printf("thankyou!");
 

Вы не можете использовать оператор break в операторе if, если оператор if не заключен в оператор итерации или switch .

Оператор break — это оператор перехода, который передает управление за пределы наименьшего заключающего оператора switch или итерации.

Ответ №2:

Вы можете использовать инструкцию «break» в двух состояниях.

  1. В цикле
  2. В случае переключения, если вы используете в цикле. Когда оператор break сработает, цикл завершится. Если вы используете в случае переключения.Когда оператор break работает в одном из случаев, другие случаи не работают. Неявно цикл завершен, если блок не будет выполняться снова.