如何跟踪开关用例值的执行顺序

How to keep track of order in which switch case values are executed?

本文关键字:执行 顺序 开关 何跟踪 跟踪      更新时间:2023-10-16

如何跟踪switch case语句的执行顺序?

例如:

while (some_boundary) {    
    switch (value) {
        case a:
            do something;
            move to next value;
            break;
        case b:
            do something;
            move to next value;
            break;
        case c:
            do something;
            move to next value;
            break;
    } 
}

我想知道switch是执行abc还是baccab

知道吗?还是通过if/else实现更有意义?

您可以在每次迭代时保存一个向量,其中包含相应迭代的值:

std::vector<int> sequence;
while (some_boundary) {
    int temp = computeValue(); // Or however you get your value.
    sequence.push_back(temp);
    switch (temp) {
    case a:
        //do something;
        break;
    case b:
         //do something;
        break;
    case c:
        //do something;
    break;
    } 
}

编辑:这是假设值设置在while和switch之间,所以您可以提前保存它。另一种选择是在每种情况下都包含push_back指令,但更"脏"。预先分配矢量也可以节省一些计算时间。

第2版:根据建议修改代码,以确保计算出新的值。

如果你只是想知道(而不是保存结果),你可以在每次迭代时输出值。尝试

cout << value << endl;

作为while循环内的第一行。