2016-01-15 107 views
-5

我看到一個教程,解釋如何在循環中使用「break」語句 但每次我嘗試使用它時我都會收到編譯錯誤說:break語句在循環中不起作用

「break語句不在循環或開關
                                              break;"

這是我的代碼:

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

哪裏循環? –

+4

閱讀編譯錯誤 – nedim

+2

如果< - 不是循環:/ – nafas

回答

6

FWIW,if是一個條件(選擇語句,是精確的),並break作品在一個循環(迭代語句)/ switch-case語句。

C11,章§6.8.6.3

一個break聲明,應僅在或作爲開關體或循環體出現。

在任何情況下,在if語句正文中不需要break

+0

更準確地說,您不需要'if'語句體中的'break',除非'if'語句在循環體內(或開關的情況下,但這不是主題)是itslef – 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]; 

不正常:

if (cond11) { /* not in any while/do/for loop, or case switch */ 
    break;    /* or continue; */ 
} 
相關問題