C/C++在switch中如何从一个标签跳到另外一个.
迷茫
迷茫 2017-04-17 14:30:05
0
4
560
switch(ch){
    case 1:
    case 2:
    case 3:
    ...
}

如果我想让当ch == 1时程序从运行完case 1的代码直接跳到case 3应该怎么做?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(4)
阿神

一般遇到這種問題,多半是程式邏輯上有問題了。單就這個問題本身,這樣做就可以:

#include <stdio.h>

int main(void)
{
        int i = 1;
        switch(i) {
        case 1:
                printf("case 1\n");
        case 3:
                printf("case 3\n");
                break;
        case 2:
                printf("case 2\n");
                break;
        default:
                break;
        }
        return 0;
}
左手右手慢动作

加個flag,這樣能滿足題主你的需求嗎。 。 。 。

#include <iostream>

using namespace std;

int main()
{
    int a;
    cin >> a;
    bool flag = true;
    switch(a)
    {
        case 1:
        {
            cout << "hello";
            flag = false;
        }
        if (flag)
        {    
            case 2:
            {
                cout << "world\n";
            }
        }
        case 3:
        {
            cout << "heihei\n";
        }
    }
    return 0;
}

再來個goto版本:

#include <iostream>

using namespace std;

int main()
{
    int a;
    cin >> a;
    //bool flag = true;
    switch(a)
    {
        case 1:
        {
            cout << "hello";
            goto here;
        }
        //if (flag)
        //{    
            case 2:
            {
                cout << "world\n";
            }
        //}
        here:
        case 3:
        {
            cout << "heihei\n";
        }
    }
    return 0;
}
刘奇

技術上講 goto 可以搞定

#include <stdio.h>

int main(void)
{
    int i = 1;
    switch(i) {
        case 1:
            printf("case 1\n");
            goto eleven;
            break;
        case 3:
eleven:     printf("case 3\n");
            break;
        case 2:
            printf("case 2\n");
            break;
        default:
            break;
    }   
    return 0;
}

但同意LS的講法,你程式邏輯有問題。

大家讲道理

可以再加一個新的case,將case 1 與 case 3中的程式碼全部複製過去,這樣,就完全不影響原來的執行邏輯了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板