2016-01-15 3 views
-5

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

«перерыв заявление не в цикле или переключения
                                              break;"

Это мой код:

if (finalFirstChar > 6 || finalFirstChar < 1) 
{ 
    printf("You didn't entered a proper number! \n"); 
    break; 
} 
+7

Где цикл? –

+4

прочитайте ошибку компиляции – nedim

+2

if <- not a loop:/ – nafas

ответ

6

FWIW, if это условие (оператор выбора, чтобы быть точным), и break работает в цикле (итерационное заявление)/оператор-оператор.

Согласно C11, глава §6.8.6.3

break заявление должно появляться только в или как тело выключателя или тела цикла.

В любом случае вам не нужен break в корпусе оператора if.

+0

Точнее, вам не нужно 'break' в теге' if', если этот оператор 'if' не является его частью внутри тела цикла (или случай переключения, но это не предмет) – mikedu95

+0

Я хочу сделать этот разрыв так, если условие в" if " существует, он будет пропустить до конца функции и не будет преформировать что-либо еще в нем. – Nathan1982

+2

@ Nathan1982 за то, что вам не нужен перерыв. Просто отрицайте проверку состояния и поместите часть _rest_ в тело условия. Просто. –

0

OK:

while (cond1) { 
    if (cond2) break;    /* or continue; */ 
    if (cond3) return [something]; 
} 

for (init; cond4; after) { 
    if (cond5) break;    /* or continue; */ 
    if (cond6) return [something]; 
} 

do { 
    if (cond7) break;    /* or continue; */ 
    if (cond8) return [something]; 
} while (cond9); 

if (cond10) return [something]; 

NOT OK:

if (cond11) { /* not in any while/do/for loop, or case switch */ 
    break;    /* or continue; */ 
} 
Смежные вопросы