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++;,开关操作员的问题 现在我正在看一些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在I=0时执行,为什么会发生这种情况?

案例0中缺少break语句

您需要break语句,否则将得到“失败”

当您点击
案例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。ike
case 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