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中的程式碼全部複製過去,這樣,就完全不影響原來的執行邏輯了。