2016-03-09 64 views
-8
#include<stdio.h> 

int main() { 
    int i; 
    for(i = 0; i< 10 ; i++) { 
     printf("test1 &d", i); 
     if (i == 2) 
      break; 
    } 
    if (break == 1) //line 10 
     printf("test2 %d", i); 

    getchar(); 
    return 0; 
} 

此代碼返回兩個錯誤。首先是第10行的語法錯誤中斷。其次是第10行的表達式。If(break == 1)break;不起作用

編輯:我沒有使用break作爲變量。我記得幾年前爲此目的使用休息,我記得它曾經工作過。所以我要求瞭解它是否可以反過來,因爲我使用了不同的編譯器或其他東西。

+4

其實,這些錯誤都沒事。有什麼問題? – skypjack

+1

你覺得'break == 1'是什麼意思? – StoryTeller

+3

'break'不是一個變量,你不能比較它。這是一條指令。 –

回答

3

break是關鍵字,不能用作變量。

section 6.8.6.3 of the C standard

1 break語句應僅在或作爲開關體或循環體出現。

2 break語句終止最小封閉開關 或迭代語句的執行。

如果要檢測你是否爆發for循環,你需要的是一個獨立的變量:

#include<stdio.h> 

int main() { 
    int i, breakout = 0; 
    for(i = 0; i< 10 ; i++) { 
     printf("test1 &d", i); 
     if (i == 2) { 
      breakout = 1; 
      break; 
     } 
    } 
    if (breakout == 1) //line 10 
     printf("test2 %d", i); 

    getchar(); 
    return 0; 
} 
+0

在示例代碼中,如果'i'小於10,則循環通過'break'語句結束。 –

+0

@dbush沒有必要再使用一個額外的變量「breakout」。 –

+0

我知道如何做到這一點與突破。我記得爲此目的使用休息。這就是爲什麼我問。 – madkobra

0

break語句不是一個函數,因此使用的語句時,它不會返回一個值。這意味着比較'break == 1'是無效的,不能被測試。

0

你的代碼的問題是你使用'break'作爲變量,它是一個保留字;你不能把它當作一個變量。

如果你試圖完成的事情是,當且僅當for循環爆發時,你可以在break語句之前調用printf,它會工作得很好。

4

break不是一個變量,你不能比較它。這是一條指令。如果你想知道如果循環過早地退出,而不是

if (break == 1) 

你可以使用

if (i < 10)