关于下面C ++代码中的switch / case语句:“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;
}
}
答案 0 :(得分:18)
这是Duff's Device,这是一种古老而聪明的技术,可以跳到循环的中间。
答案 1 :(得分:0)
我没有对它进行过测试,但一般来说,只要你没有实现“break”语句,就应该输入do / while循环......
答案 2 :(得分:0)
Switch不评估/理解源代码。这是一个直接跳转到源代码标签case 4
答案 3 :(得分:0)
你到达do-while循环的原因是:
Switch语句在第一个标签处开始处理。如果它没有达到break语句,它将连续向下遍历每个标签,直到它达到一个(在这种情况下它退出),或者它已遍历每个标签并执行其中的所有代码,然后退出。