作者adrianshum (Alien)
看板C_and_CPP
標題Re: [語法] switch語法
時間Wed Dec 1 12:29:13 2010
※ 引述《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
推 loveme00835:這就是有建設性的東西! 12/01 12:32
→ adrianshum:兩回事, 不要扯在一起. 我還是覺得, 別人告訴你資料 12/01 12:35
→ adrianshum:有誤, 應該是虛心受教而不是硬抱著自己有問題的東西而 12/01 12:36
→ adrianshum:回嗆別人: 你不教別人, 沒權說我的東西錯 12/01 12:37
→ loveme00835:有沒有問題看你怎麼去看他囉, 看到迴圈兩字就硬要做聯 12/01 12:38
→ loveme00835:想我也沒辦法 12/01 12:38
→ adrianshum:是你自己說 "switch ... *就是*.. 迴圈" 的, 還可以怪 12/01 12:40
→ adrianshum:別人? 還有, 要繼續這個話題的, 跑回原文好了, 不要又 12/01 12:40
→ adrianshum:牽連到另一篇回文 12/01 12:40
推 ledia:我也覺得 loveme00835 版友有點太凹了, 雖然指正的人也有點 12/01 14:20
→ ledia:嗆, 不過並不能讓你的說法變得比較能讓人接受 12/01 14:20
→ ledia:不過 200 篇文章之後大家就都忘了, 就此打住吧.... XD 12/01 14:21
→ uranusjr:其實之前「你可以把 switch 想成只執行一次的迴圈」我看 12/01 15:55
→ uranusjr:到時還滿有種恍然大悟的感覺, 之前沒這樣想過XD 當然我 12/01 15:55
→ uranusjr:知道這說法有問題, 但真的很好理解啊XD 12/01 15:56
推 Yshuan:推這篇... 還有常用這技巧的是英文大小寫@@ 12/03 08:37