看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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