在此循环中(假设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;
}
答案 0 :(得分:10)
你需要使用休息;或者switch()将拥有所谓的“fallthrough”。
(这意味着它执行你的案例:然后继续处理之后发生的任何事情,包括其他案例陈述中的代码)。
答案 1 :(得分:2)
你需要把
break;
在每个案件结束时。否则它转到case1,然后一直持续到select的结尾。 (案例1,2,3,4,5)
答案 2 :(得分:2)
您必须在每个break;
部分的末尾插入case:
- 语句。
这是因为switch () {}
仅仅是goto
的重构,案例只是标签,而不是真正的块(这就是为什么他们使用标签语法而不是像{{{{{ 1}}。
答案 3 :(得分:1)
在案例之后加上“break”语句,否则控制流程将直接通过。