2014-02-22 31 views
0

我試圖從switch語句中的while循環中斷開,但它不起作用。我得到一個無限循環。爲什麼?如何使用開關暫停一個while循環?

int main() 
{ 
    int n; 
    while (std::cin >> n) 
    { 
     switch (n) 
     { 
     case 4: 
      break; 
      break; 
     default: 
      std::cout << "Incorrect"; 
      break; 
     } 
    } 
} 

回答

4

你得到一個無限循環,因爲那不是break的工作方式。執行第一個break後,您將退出switch聲明,並且第二個break將不會執行。你必須找到另一種方式來退出外部控制結構。例如,在switch語句中設置一個標誌,然後在最後或循環條件中檢查該標誌。

while (std::cin >> n) 
{ 
    bool should_continue = true; 
    switch (n) 
    { 
    case 4: 
     should_continue = false; 
     break; 
    default: 
     std::cout << "Incorrect"; 
     break; 
    } 
    if (!should_continue) 
     break; 
} 
1

breakswitch打破了開關。做類似於:

while (std::cin >> n) 
{ 
    if(n == 4) 
     break; 
    switch (n) 
    { 
    //...Other case labels 
    default: 
     std::cout << "Incorrect"; 
     break; 
    } 
}