c++;,开关操作员的问题 现在我正在看一些C++测试,这里发现了这样的代码: int main() { for (int i=0; i<3; i++) { switch(i) { case 0: cout<<"ZERO"; case 1: cout<<"ONE"; continue; case 2: cout<<"TWO"; break; } cout<<endl; } system("PAUSE"); return 0; }
我调试并发现案例0和案例1在I=0时执行,为什么会发生这种情况?案例0中缺少break语句您需要break语句,否则将得到“失败”当您点击c++;,开关操作员的问题 现在我正在看一些C++测试,这里发现了这样的代码: int main() { for (int i=0; i<3; i++) { switch(i) { case 0: cout<<"ZERO"; case 1: cout<<"ONE"; continue; case 2: cout<<"TWO"; break; } cout<<endl; } system("PAUSE"); return 0; },c++,for-loop,switch-statement,C++,For Loop,Switch Statement,我调试并发现案例0和案例1在I=0时执行,为什么会发生这种情况?案例0中缺少break语句您需要break语句,否则将得到“失败”当您点击案例0:时,它将转到案例1:,因为没有任何语句可以阻止它这样做,例如中断或继续您忘记了中断状态 switch(i){ case 0: { //do something break; } case 1: { //do somet
案例0:
时,它将转到案例1:
,因为没有任何语句可以阻止它这样做,例如中断
或继续
您忘记了中断状态
switch(i){
case 0:
{
//do something
break;
}
case 1:
{
//do something
break;
}
default:
{
//do something
break;
}
}
因为每个案例都需要一个中断声明。如果case为true,那么它将一直执行,直到找到break语句或switch brakes end 您想要的代码
int main()
{
for (int i=0; i<3; i++)
{
switch(i)
{
case 0: cout<<"ZERO"; break;
case 1: cout<<"ONE"; continue;
case 2: cout<<"TWO"; break;
}
cout<<endl;
}
system("PAUSE");
return 0;
}
intmain()
{
for(int i=0;i开关
只跳转到匹配的大小写
标签。完成此操作后,将忽略进一步的大小写
标签。还要注意,没有隐式的中断
-如果不使用它,后续代码将按顺序执行
所以
for(int i=0;i您对switch语句的误解是常见的,这是因为switch语句经常被引入,好像它们更便于键入if-then-else语句
他们不是
把它们看作是一系列指令,其高度的度量单位是指令
您可以决定高度,即第一个案例
匹配与最接近的后续中断
之间的指令
:)如果你放了“CUT>”,<>代码>它将不会进入下一个用例。FYI, Twitter 是一个语句,而不是一个操作符。在C&C++中,在没有中断的情况下,情况会发生变化。请突出输出。为什么要通过Case1:如果i=1?@ VITAiLK,因为这是语言设计的方式。因此,您可以编写代码L。ikecase 0:case 1:case 2:cout@VitaliK每个case
都只会给你一个入口点,一旦你开始执行,你就会一直执行,直到你碰到break
在这个例子中,因为你有一个循环,你也可以使用continue
来突破。这个行为被称为fall-through
ence可能会有帮助。@Shafik YaghmourOk,thx,我明白了。它只是一个用于输入的标签。我只是从来没有使用过像goto这样的标签,这就是为什么我感到困惑。为什么继续用于案例1
?
int main()
{
for (int i=0; i<3; i++)
{
switch(i)
{
case 0: cout<<"ZERO"; break;
case 1: cout<<"ONE"; continue;
case 2: cout<<"TWO"; break;
}
cout<<endl;
}
system("PAUSE");
return 0;
}
for (int i=0; i<3; i++) // statements (1,2,3)
{
switch(i) // statement 4
{
case 0: cout<<"ZERO"; // statement 5
case 1: cout<<"ONE"; continue; // statements 6; 7
case 2: cout<<"TWO"; break; // statements 8; 9
}
cout<<endl; // statement 10
}
i = 0; // statement 1
// begin first iteration with i=0
if (i<3) => true // statement 2
switch (i) => goto case 0 // statement 4
case 0: cout<<"ZERO" // statement 5
cout<<"ONE"; // statement 6
continue; // statement 7
=> jump to next iteration of loop
i++; // statement 3
if (i<3) => true // statement 2
// second iteration, i=1
switch (i) => goto case 1 // statement 4
case 1: cout<<"ONE"; // statement 6
continue; // statement 7
=> jump to next iteration of loop
i++; // statement 3
if (i<3) => true // statement 2
// second iteration, i=2
switch (i) => goto case 2 // statement 4
case 2: cout<<"TWO"; // statement 8
break; // statement 9
=> jump to end of switch
cout << endl; // statement 10