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

时间:2014-09-09 23:48:46

标签: c++ c switch-statement

如何跟踪执行switch案例陈述的顺序?

例如:

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还是bac还是cab等等。

有什么想法吗?或者通过if/else实施更有意义吗?

2 个答案:

答案 0 :(得分:1)

您可以在每次迭代时使用相应迭代的值保存向量:

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指令,但更“脏”。预分配矢量可以节省一些计算时间。

Edit2:根据建议修改代码,以确保计算新值。

答案 1 :(得分:0)

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

cout << value << endl;

作为while循环中的第一行。