Операторы Switch/Case в С++

Относительно оператора switch/case в коде С++ ниже: "Случай 1", очевидно, неверен, так как/почему он входит в цикл do-while?

#include <iostream>

using namespace std;

int main() {

    int test = 4;

    switch(test) {
        case 1: do {
            case 2: test++;
            case 3: test++;
            case 4: cout << "How did I get inside the do-while loop?" << endl; break;
            case 5: test++;
        } while(test > 0);
        cout << test << endl;
    }
}

Ответы

Ответ 1

Это Duff Device, старая, умная техника для прыжка в середину цикла.

Ответ 2

Я не тестировал его, но в общем случае цикл do/while должен быть введен так долго, пока не будет реализован оператор "break"...

Ответ 3

Коммутатор не оценивает/не понимает исходный код. Это просто команда здесь, чтобы перейти непосредственно к метке исходного кода case 4

Ответ 4

Причина, по которой вы достигаете цикла do-while, заключается в следующем:

Операторы переключателей начинают обработку на первой метке. Если он НЕ попадает в оператор break, он будет продолжать работать по каждой метке подряд, пока она не ударит одну (в этом случае она не выйдет), или она прошла через каждую метку и выполнила весь код внутри, а затем выйдет.