错误:break语句不在循环内,实际上是什么时候?

时间:2014-09-08 03:11:59

标签: c++

G ++编译器出现以下错误:

error: break statement not within loop or switch

虽然我的代码如下:

#include <iostream>

using namespace std;

int number;

int main() {
    cout << "Let's check whether an integer is even or odd." << endl;
    cout << "Input new for checking a new number." << endl;
    cout << "Input 0 when done." << endl;

    cout << "Enter a number to check whether it's even or odd." << endl << endl;
    cin >> number;
    if (number == 0) {
        cout << "Aborted." << endl;
        break;
    } else if (number % 2 == 0) {
        cout << "Number is even." << endl;
    } else {
        cout << "Number is odd." << endl;
    }

    return (0);
}

正如您所看到的,确切地说,break语句 是一个循环,if循环。那么为什么会出现这个错误?

4 个答案:

答案 0 :(得分:1)

错误消息足够清晰

  

错误:break语句不在循环开关

您的代码中使用break语句的循环或swictch语句在哪里?

只需从此处删除break语句

if (number==0) {
        cout<<"Aborted."<<endl;
        break;
}

并简单地写

if (number==0) {
        cout<<"Aborted."<<endl;
}

程序中还写了一个循环。所以该程序看起来像

#include <iostream>

int main() 
{
    std::cout << "Let's check whether an integer is even or odd." << std::endl;
    std::cout << "Input new for checking a new number." << std::endl;
    std::cout << "Input 0 when done."<< std::endl;

    while ( true )
    {
        std::cout << "\nEnter a number to check whether it's even or odd (0-exit): "; 

        int number = 0;
        std::cin >> number;

        if ( number == 0 ) break;

        if ( number % 2 == 0 ) 
        {
            std::cout<< "Number is even." << std::endl;
        }
        else 
        {
            std::cout << "Number is odd." << std::endl;
        }
    }

    return 0;
}

答案 1 :(得分:0)

&#34;破&#34;意味着打破switch / do / while / for循环(不是#34;如果&#34;语句)。您的示例中不需要中断,程序流程将继续到&#34; return(0)&#34;声明到达你现在有破坏声明的地方。

答案 2 :(得分:0)

break语句只有在循环中才有效。通过C ++中的循环,这意味着循环,while循环,并执行... while循环。 if用于测试何时脱离循环的条件。

如果您希望程序正常工作(不重新启动),请将测试if语句放入循环(例如,for循环)。

答案 3 :(得分:0)

我使用的最简单的循环是:

do
{
   if (number==0) 
   {
      cout<<"Aborted."<<endl;
      break;
   }
   else if( ...  )
   ...


}while(0);

这将完全循环一次。