84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
switch(ch){ case 1: case 2: case 3: ... }
如果我想让当ch == 1时程序从运行完case 1的代码直接跳到case 3应该怎么做?
ch == 1
case 1
case 3
业精于勤,荒于嬉;行成于思,毁于随。
一般遇到这种问题,多半是程序逻辑上有问题了。单就这个问题本身,这样做就可以:
#include <stdio.h> int main(void) { int i = 1; switch(i) { case 1: printf("case 1\n"); case 3: printf("case 3\n"); break; case 2: printf("case 2\n"); break; default: break; } return 0; }
加个flag,这样能满足题主你的需求吗。。。。
#include <iostream> using namespace std; int main() { int a; cin >> a; bool flag = true; switch(a) { case 1: { cout << "hello"; flag = false; } if (flag) { case 2: { cout << "world\n"; } } case 3: { cout << "heihei\n"; } } return 0; }
再来个goto版本:
#include <iostream> using namespace std; int main() { int a; cin >> a; //bool flag = true; switch(a) { case 1: { cout << "hello"; goto here; } //if (flag) //{ case 2: { cout << "world\n"; } //} here: case 3: { cout << "heihei\n"; } } return 0; }
技术上讲 goto 可以搞定
goto
#include <stdio.h> int main(void) { int i = 1; switch(i) { case 1: printf("case 1\n"); goto eleven; break; case 3: eleven: printf("case 3\n"); break; case 2: printf("case 2\n"); break; default: break; } return 0; }
但是同意LS的讲法,你程序逻辑有问题。
可以加一个新的case,将case 1 与 case 3中的代码全部复制过去,这样,就完全不影响原来的执行逻辑了。
一般遇到这种问题,多半是程序逻辑上有问题了。单就这个问题本身,这样做就可以:
加个flag,这样能满足题主你的需求吗。。。。
再来个goto版本:
技术上讲
goto
可以搞定但是同意LS的讲法,你程序逻辑有问题。
可以加一个新的case,将case 1 与 case 3中的代码全部复制过去,这样,就完全不影响原来的执行逻辑了。