C ++中的Switch / Case语句

时间:2010-05-26 06:06:08

标签: c++

关于下面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;
    }
}

4 个答案:

答案 0 :(得分:18)

这是Duff's Device,这是一种古老而聪明的技术,可以跳到循环的中间。

答案 1 :(得分:0)

我没有对它进行过测试,但一般来说,只要你没有实现“break”语句,就应该输入do / while循环......

答案 2 :(得分:0)

Switch不评估/理解源代码。这是一个直接跳转到源代码标签case 4

的命令

答案 3 :(得分:0)

你到达do-while循环的原因是:

Switch语句在第一个标签处开始处理。如果它没有达到break语句,它将连续向下遍历每个标签,直到它达到一个(在这种情况下它退出),或者它已遍历每个标签并执行其中的所有代码,然后退出。