#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» в двух состояниях.
- В цикле
- В случае переключения, если вы используете в цикле. Когда оператор break сработает, цикл завершится. Если вы используете в случае переключения.Когда оператор break работает в одном из случаев, другие случаи не работают. Неявно цикл завершен, если блок не будет выполняться снова.