案例操作员为操作员

时间:2015-05-26 19:57:03

标签: c++ for-loop switch-statement

for (int i=0; i<3;i++)
{
    switch (i)
    {
 case 0: cout << "0"<<endl;
 case 1: cout << "1"<<endl;
 case 2: cout << "2"<<endl;
    }
}

为什么要打印0 1 2 1 2 2?而不只是0 1 2。我用gcc。

3 个答案:

答案 0 :(得分:0)

你想要这个:

for (int i=0; i<3;i++)
{
  switch (i)
  {
   case 0: cout << "0"<<endl; break;
   case 1: cout << "1"<<endl; break;
   case 2: cout << "2"<<endl; break;
  }
}

答案 1 :(得分:0)

您必须在break;中的每段代码之后添加case x:

switch (i)
{
case 0: cout << "0"<<endl; break;
case 1: cout << "1"<<endl; break;
case 2: cout << "2"<<endl; break;
}

因此,在执行case之后的代码片段之后,控制转到for循环。

答案 2 :(得分:0)

在一个开关案例块中,一旦满足case,程序的控制将停止检查以确定彼此case是否为真,并将继续执行每个&#34;动作& #34 ;.例如:

int i = 1;
switch (i)
{
    case 0: 
        cout << "0"; //action 1
    case 1:
        cout << "1"; //action 2
    case 2:
        cout << "2"; //action 3
}

//output is 12

所以,在你的for循环中,这也正在发生。要解决此问题(如其他人所述),请在每个操作结束时使用break语句,以防止编程控制从&#34;落到&#34;每个动作:

int i = 2;
switch (i)
    {
        case 0: 
            cout << "0"; //action 1
            break;
        case 1:
            cout << "1"; //action 2
            break;
        case 2:
            cout << "2"; //action 3
            break;
    }

    //output is 2