![](/img/trans.png)
[英]#define C++ keyword 'case' in switch case statements?
[英]Switch/Case statements in C++
关于以下C ++代码中的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的设备 ,这是一种跳入循环中间的古老而巧妙的技术。
我没有测试过,但是一般来说,只要您没有实现“ break”语句,就应该输入do / while循环...
Switch不评估/不理解源代码。 这只是直接跳转到源代码标签case 4
到达do-while循环的原因是:
Switch语句从第一个标签开始处理。 如果未命中break语句,它将连续地遍历每个标签,直到命中一个(在这种情况下退出),或者遍历每个标签并执行其中的所有代码,然后退出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.