关于 switch,你需要知道的一切

Leo2011 警示后人

话说写代码时要写 1 吨 if 的题你们有木有遇到?

比如这道题。6 个操作要写 6 个 if!那么你的代码可能会成这德行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (op == 1) {
// 一顿操作猛如虎
} else {
if (op == 2) {
// 一顿操作猛如虎
} else {
if (op == 3) {
// 一顿操作猛如虎
} else {
if (op == 4) {
// 一顿操作猛如虎
} else {
if (op == 5) {
// 一顿操作猛如虎
} else {
//一顿操作猛如虎
}
}
}
}
}

坑 * 啊!一个这写 20 多行……

于是,人们发明了这个东西:switch!

switch 这玩意儿需要你给它 1 个数,它会自己判断。

格式大概是这样:

1
2
3
4
5
6
7
8
9
10
11
switch (op) {
case 1 : /*一顿操作猛如虎*/ break;
case 2 : /*一顿操作猛如虎*/ break;
case 3 : /*一顿操作猛如虎*/ break;
case 4 : /*一顿操作猛如虎*/ break;
case 5 : /*一顿操作猛如虎*/ break;
case 6 : /*一顿操作猛如虎*/ break;
......
case 10086: /*一顿操作猛如虎*/ break;
default : /*一顿操作猛如虎*/

咱来解读一下这货咋跑的:

先进去,op 是几就进哪个 case(与位置无关),执行里面的操作。注意 case 语句后面的操作无论有几个语句都不用像 if 或循环那样写个花括号括起来。最后,如果你认为到此为止了,那么写个 “break” 结束。如果你不写 “break”,那么它会自动执行下一个语句(可以是 case,也可以是 default)

如果哪个 case 都不对应呢?那么这个时候就进了 default。default 已经是默认一波操作了,不需要 break 了。

明白了不?

那么用 switch 语句改写上面那段代码就会变成这德行:

1
2
3
4
5
6
7
8
switch (op) {
case 1 : /*一顿操作猛如虎*/ break;
case 2 : /*一顿操作猛如虎*/ break;
case 3 : /*一顿操作猛如虎*/ break;
case 4 : /*一顿操作猛如虎*/ break;
case 5 : /*一顿操作猛如虎*/ break;
case 6 : /*一顿操作猛如虎*/ break;

是不是清爽了好多?


Q & A:

  1. case 里的 break; 还能结束循环吗?

    不能,只能结束该 switch 语句。

  2. 你最后的那段代码没有 default 哎……

    这货本来就是默认操作,可写可不写。就像你也写过 1 吨不带 else 的 if 一样……

  3. default 只能写在最后嘛?

    你爱写哪儿写哪儿,反正能走 case 的都先走 case 了。只不过一般会写在最后。

  4. switch (op) 中的 op 可以是哪几种类型呢?

    一般都是整数,有时也会用 char。但你千万别用浮点数(浮点数都敢枚举,疯了?这得枚举到猴年马月去…… 为了给你续命,正常的编译器都会直接 CE)。

  5. case 里的东西只能写在 1 行里弄得我码风都乱了……

    不是,这 TM 谁告诉你只能写在 1 行里的?你要是愿意可以写 10086w 行,反正都不用加花括号。写在 1 行里只是为了方便阅读……

  6. 能嵌套吗?

    当然可以,switch= 特殊的 if 语句,你 if 能嵌套 switch 咋就不行了?

  • 标题: 关于 switch,你需要知道的一切
  • 作者: Leo2011
  • 创建于 : 2023-11-25 14:03:51
  • 更新于 : 2025-05-31 21:17:33
  • 链接: https://www.leo2011.eu.org/2023/11/25/guan-yu-switch-ni-xu-yao-zhi-dao-de-yi-qie/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
Nickname
Email
Website
  • OωO
  • |´・ω・) ノ
  • ヾ (≧∇≦*) ゝ
  • (☆ω☆)
  • (╯‵□′)╯︵┴─┴
  •  ̄﹃ ̄
  • (/ω\)
  • ∠( ᐛ 」∠)_
  • (๑•̀ㅁ•́ฅ)
  • →_→
  • ୧(๑•̀⌄•́๑)૭
  • ٩(ˊᗜˋ*)و
  • (ノ °ο°) ノ
  • (´இ皿இ`)
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • (╯°A°)╯︵○○○
  • φ( ̄∇ ̄o)
  • ヾ (´・ ・`。) ノ "
  • (ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
  • (ó﹏ò。)
  • Σ(っ °Д °;) っ
  • (,,´・ω・)ノ"(´ っ ω・`。)
  • ╮(╯▽╰)╭
  • o(*////▽////*)q
  • >﹏<
  • ( ๑´•ω•) "(ㆆᴗㆆ)
  • 😂
  • 😀
  • 😅
  • 😊
  • 🙂
  • 🙃
  • 😌
  • 😍
  • 😘
  • 😜
  • 😝
  • 😏
  • 😒
  • 🙄
  • 😳
  • 😡
  • 😔
  • 😫
  • 😱
  • 😭
  • 💩
  • 👻
  • 🙌
  • 🖕
  • 👍
  • 👫
  • 👬
  • 👭
  • 🌚
  • 🌝
  • 🙈
  • 💊
  • 😶
  • 🙏
  • 🍦
  • 🍉
  • 😣
  • 颜文字
  • Emoji
  • Bilibili
0 comments
No comment