繁体   English   中英

C ++中的Switch / Case语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM