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。
答案 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