Re: [語法] switch語法
※ 引述《Lynch (林區)》之銘言:
: 看到一篇習題 也用電腦去執行過了
: http://nopaste.info/d7f9ff49e2.html
: 請問執行後n的值是多少? A:4
: 執行到case 1:
: n 不是為3嗎
: 所以理論上case 1: 以下應該無視才對呀
: 為什麼會執行讓n為4呢
: 如果switch有迴圈效果答案應該是4
: .......switch哪有迴圈效果
: 到底是我哪裡出錯呢? = =a
原文的推文太亂, 又好像沒有真的貼出過有用的
資料, 我另闢文回你好了.
switch 你可以想成, 視乎 switch 的值, 跳到
相對應的 case 的位置, 然後一直往下執行, 直
到 switch 的完結
比如
swtich (a) {
case 1:
A;
case 2:
B;
case 3:
C;
}
假設 a 是 2, 執行至 switch (a), 就會跳到 case 2:
然後一直執行, 所以會跑了 B C
一般來說大部份情況下, 你可能只是想 a = 1 就只跑 A,
a=2 只跑 B..
這時就要用 break.
break 的作用是跳出 最接近 而又包著 break 的一層
switch 或 do/while/for loop
swtich (a) {
case 1:
A;
break;
case 2:
B;
break;
case 3:
C;
break;
}
(另補充, 沒加 break 而繼續執行下去的 "技巧" 叫 fall-through,
有些情況下是很有用的技巧. 其實
swtich (a) {
case 1:
A;
break;
case 2:
case 3:
case 4:
B;
break;
case 5:
C;
break;
}
2,3,4 都跑 B, 這也是其中一種 fall-through 的應用)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.238.156.185
推
12/01 12:32, , 1F
12/01 12:32, 1F
→
12/01 12:35, , 2F
12/01 12:35, 2F
→
12/01 12:36, , 3F
12/01 12:36, 3F
→
12/01 12:37, , 4F
12/01 12:37, 4F
→
12/01 12:38, , 5F
12/01 12:38, 5F
→
12/01 12:38, , 6F
12/01 12:38, 6F
→
12/01 12:40, , 7F
12/01 12:40, 7F
→
12/01 12:40, , 8F
12/01 12:40, 8F
→
12/01 12:40, , 9F
12/01 12:40, 9F
推
12/01 14:20, , 10F
12/01 14:20, 10F
→
12/01 14:20, , 11F
12/01 14:20, 11F
→
12/01 14:21, , 12F
12/01 14:21, 12F
→
12/01 15:55, , 13F
12/01 15:55, 13F
→
12/01 15:55, , 14F
12/01 15:55, 14F
→
12/01 15:56, , 15F
12/01 15:56, 15F
推
12/03 08:37, , 16F
12/03 08:37, 16F
討論串 (同標題文章)