C ++ for循环和switch语句逻辑错误

时间:2011-03-21 19:55:00

标签: c++ loops for-loop switch-statement

在此循环中(假设amount为2),而不是打印:

1. [op1]
2. [op2]

打印:

1. [op1]
2. [op2]
3. [op3]
4. [op4]
5. [op5]

为什么呢?我该如何解决这个问题?

for(int i=1;i<=amount;i++){
            //string s;
            switch(i){
            case 1:
                cout << i << ". " << op1 << endl;
                //s = op1;
            case 2:
                cout << i << ". " << op2 << endl;
                //s = op2;
            case 3:
                cout << i << ". " << op3 << endl;
                //s = op3;
            case 4:
                cout << i << ". " << op4 << endl;
                //s = op4;
            case 5:
                cout << i << ". " << op5 << endl;
                //s = op5;
            }
            //cout << i << ". " << s << endl;
        }

4 个答案:

答案 0 :(得分:10)

你需要使用休息;或者switch()将拥有所谓的“fallthrough”。

(这意味着它执行你的案例:然后继续处理之后发生的任何事情,包括其他案例陈述中的代码)。

答案 1 :(得分:2)

你需要把

break;

在每个案件结束时。否则它转到case1,然后一直持续到select的结尾。 (案例1,2,3,4,5)

答案 2 :(得分:2)

您必须在每个break;部分的末尾插入case: - 语句。

这是因为switch () {}仅仅是goto的重构,案例只是标签,而不是真正的块(这就是为什么他们使用标签语法而不是像{{{{{ 1}}。

答案 3 :(得分:1)

在案例之后加上“break”语句,否则控制流程将直接通过。

相关问题