Ответ 1
Это Duff Device, старая, умная техника для прыжка в середину цикла.
Относительно оператора 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;
}
}
Это Duff Device, старая, умная техника для прыжка в середину цикла.
Я не тестировал его, но в общем случае цикл do/while должен быть введен так долго, пока не будет реализован оператор "break"...
Коммутатор не оценивает/не понимает исходный код. Это просто команда здесь, чтобы перейти непосредственно к метке исходного кода case 4
Причина, по которой вы достигаете цикла do-while, заключается в следующем:
Операторы переключателей начинают обработку на первой метке. Если он НЕ попадает в оператор break, он будет продолжать работать по каждой метке подряд, пока она не ударит одну (в этом случае она не выйдет), или она прошла через каждую метку и выполнила весь код внутри, а затем выйдет.