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。運營商的情況下運營商
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。運營商的情況下運營商
在switch case塊中,一旦滿足case
,程序的控制將停止檢查以查看彼此case
是否爲真,並且將繼續執行每個「動作」。例如:
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
聲明在每個動作的結束,以防止編程控制「下降到」每一個動作:
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
你想這樣的:
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;
}
}
你有case x:
執行每一段代碼後添加break;
像
switch (i)
{
case 0: cout << "0"<<endl; break;
case 1: cout << "1"<<endl; break;
case 2: cout << "2"<<endl; break;
}
所以,case
後的一段代碼後,就進入到for
循環。
你的答案是A [參考上'之開關](http://en.cppreference.com/w/cpp/language/switch)。 – chris
在每種情況之後使用break語句。 –
什麼阻止你閱讀你的C++書? –