#c
Вопрос:
Как выйти из цикла do-while, даже если разрыв объявлен в операторе if?
struct node * sort(struct node * head, int data) {
struct node * newp = (struct node * ) malloc(sizeof(struct node));
newp -> data = data;
newp -> link = NULL;
int key = data;
struct node * temp = head;
if (head == NULL || key < temp -> data) {
newp -> link = temp;
head = newp;
return head;
} else {
do {
if (temp -> link -> data > key) {
//I have declared break here but according to the rule inner loop
// must break why the do while loop is also exiting.
break;
}
temp = temp -> link;
} while (temp -> link != NULL);
newp -> link = temp -> link;
temp -> link = newp;
return head;
}
}
Комментарии:
1. Ваш вопрос не совсем ясен, о чем вы спрашиваете. Вы пытаетесь понять, почему
break
оператор выходит из вашегоdo/while
цикла? Ваш вопрос, похоже, касается вложенного цикла, но в вашей программе есть только 1 цикл.2.
if
операторы не являются циклами.while
,do while
иfor
есть. Излишне говорить, что у вас там нет внутренних петель.3. Вы говорите о внутренних циклах, но я не вижу вложенных циклов (единственный цикл-это
do...while
цикл иbreak
выходы из него).if
не считается петлей и, следовательноbreak
, не будет «вырываться» из нее.4. если
break
бы только вырватьсяif
, условный разрыв был бы невозможен.
Ответ №1:
if
Оператор — это не цикл. Операторы цикла, называемые операторами итерации в стандарте C, являются while
do
операторами, for
, и.
A break
выходит из самого внутреннего switch
, while
, do
, или for
содержащего его утверждения. ( switch
Оператор не является оператором итерации, но break
завершит его.)