[語法] switch語法

看板C_and_CPP作者 (林區)時間15年前 (2010/11/30 12:07), 編輯推噓8(8076)
留言84則, 16人參與, 最新討論串1/2 (看更多)
看到一篇習題 也用電腦去執行過了 http://nopaste.info/d7f9ff49e2.html 請問執行後n的值是多少? A:4 執行到case 1: n 不是為3嗎 所以理論上case 1: 以下應該無視才對呀 為什麼會執行讓n為4呢 如果switch有迴圈效果答案應該是4 .......switch哪有迴圈效果 到底是我哪裡出錯呢? = =a -- ◣ ◢ . ◣◥ ﹨ ﹨ ˙ ) ) ˙ . ˙ ) ◤∴ ﹨﹨ ︶ ~─~─︶─~─~─︶─~─~─︶─~─~─︶─~─~ )) .' | | .)) .).)‧ . . ˙. . ))) ▄▃▅◤◤))by dajidali‵ ◥))◥) ◥)‵◥) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.125.226.169

11/30 12:12, , 1F
break
11/30 12:12, 1F

11/30 12:13, , 2F
switch 就是跑一次的迴圈, 難道你以為不加 break他會
11/30 12:13, 2F

11/30 12:13, , 3F
自動跳掉嗎?
11/30 12:13, 3F

11/30 12:22, , 4F
進入case是由剛開始 switch(n) 的值而定, 一旦進入之
11/30 12:22, 4F

11/30 12:23, , 5F
後就是循序執行, 不管那些東西了
11/30 12:23, 5F

11/30 13:24, , 6F
不懂 = =a 我看switch的流程圖也不懂意思
11/30 13:24, 6F

11/30 13:26, , 7F
沒有break他會繼續下一行
11/30 13:26, 7F

11/30 14:08, , 8F
對呀 執行到最後default: 不是應該結束了 @@ 所以n=0→3→1
11/30 14:08, 8F

11/30 14:10, , 9F
上面是說如果沒有break的時候
11/30 14:10, 9F

11/30 14:51, , 10F
switch的應用是每個case:的最後要加上break
11/30 14:51, 10F

11/30 14:52, , 11F
依你的程式來看你的n初始設0所以進case會case 0:
11/30 14:52, 11F

11/30 14:53, , 12F
但你case 0:的最後沒加break,所以到case 1:的break離開
11/30 14:53, 12F

11/30 14:54, , 13F
switch的迴圈,所以n最後等於四
11/30 14:54, 13F

11/30 14:57, , 14F
switch迴圈是跟switch(n)的數值和case執行的..
11/30 14:57, 14F

11/30 14:59, , 15F
原PO該釐清的一點是 switch(n) 只會判斷一次跳一次
11/30 14:59, 15F

11/30 15:00, , 16F
之後即使你在 case 裡面改了 n 值也不會重新判斷
11/30 15:00, 16F

11/30 15:38, , 17F
我第一次聽說還有「只跑一次的迴圈」。
11/30 15:38, 17F

11/30 15:38, , 18F
那些把switch叫迴圈的,回去好好看書,不要教壞新手了。
11/30 15:38, 18F

11/30 15:39, , 19F
不然找本教科書把switch列為repetition structure的
11/30 15:39, 19F

11/30 15:39, , 20F
來瞧瞧。
11/30 15:39, 20F

11/30 15:41, , 21F
switch的確不是迴圈 但是樓上可以不用這麼嗆..
11/30 15:41, 21F

11/30 16:01, , 22F
樓樓上對於名詞好像有很特別的執著, 只跑一次還能叫迴
11/30 16:01, 22F

11/30 16:01, , 23F
圈嗎? 說他迴圈只是為了讓 break的用法比較直覺些, 只
11/30 16:01, 23F

11/30 16:02, , 24F
跑一次就表示我並沒有把它當成重複執行的結構, 要嗆先
11/30 16:02, 24F

11/30 16:02, , 25F
弄清楚別人的語義再說
11/30 16:02, 25F

11/30 16:29, , 26F
break的作用是跳離迴圈..我們只是好心想回答問題
11/30 16:29, 26F

11/30 16:31, , 27F
switch的確不是迴圈...謝謝您的指教..
11/30 16:31, 27F

11/30 16:39, , 28F
某大要講什麼大道理你可以另寫一篇,不要淨做些沒有
11/30 16:39, 28F

11/30 16:40, , 29F
建構性的提議,希望你可以多以教學的立場來看待這樣的
11/30 16:40, 29F

11/30 16:41, , 30F
新手文,而不是一直想導入什麼「正確的概念」,畢竟時
11/30 16:41, 30F

11/30 16:41, , 31F
機不適合,人家想要的也不一定是這個
11/30 16:41, 31F

11/30 17:10, , 32F
不過if/else不能用break,用break來看的話說成只執行
11/30 17:10, 32F

11/30 17:11, , 33F
一次的迴圈應該也不能說錯
11/30 17:11, 33F

11/30 20:37, , 34F
請加上break.. 不然會繼續往下執行
11/30 20:37, 34F

11/30 21:02, , 35F
Please Take A Break!!!!!!
11/30 21:02, 35F

12/01 10:55, , 36F
不加break的話就是 walkthrough
12/01 10:55, 36F

12/01 11:36, , 37F
我不明白, 明明是錯的資料, 只是為了你覺得 "break只能
12/01 11:36, 37F

12/01 11:42, , 38F
跳出迴圈" 所以就把 switch 說成 *就是*跑一次的迴圈,
12/01 11:42, 38F

12/01 11:42, , 39F
別人糾正, 還得給你們嗆? 還有, 把 switch 想成 "跑一
12/01 11:42, 39F

12/01 11:43, , 40F
次的迴圈" 對理解 fall-through 究竟有什麼幫助?
12/01 11:43, 40F

12/01 11:43, , 41F
有時錯的就是錯的, 還要是用錯類比而又對理解沒任何幫
12/01 11:43, 41F

12/01 11:44, , 42F
助, 為啥就不許人指正?
12/01 11:44, 42F

12/01 11:54, , 43F
比喻只有好或不好沒有對或錯, 你要開學術研討會可以去
12/01 11:54, 43F

12/01 11:55, , 44F
別邊, 不要把你的對錯知識加在別人的比喻上面, 理解效
12/01 11:55, 44F

12/01 11:56, , 45F
死不認錯又要嘴硬. 不如你說一說你的比喻對原po理解
12/01 11:56, 45F

12/01 11:57, , 46F
果好壞見仁見智, 好好好, 都你對行不行? 你教學最好餵
12/01 11:57, 46F

12/01 11:57, , 47F
fall thru 有什麼幫助? 還有, 反倒是閣下在咬文嚼字,
12/01 11:57, 47F

12/01 11:57, , 48F
整本 SPEC 給學生
12/01 11:57, 48F

12/01 11:57, , 49F
什麼 沒有對錯的比喻, 好的, 我就說你的是 超劣的比喻.
12/01 11:57, 49F

12/01 11:58, , 50F
省得你又在比喻只有好壞沒有對錯這種東西打圈
12/01 11:58, 50F

12/01 11:58, , 51F
原 PO 能接受就好, 剩下的如果他要深究還是有機會, 那
12/01 11:58, 51F

12/01 11:59, , 52F
你蠻極端耶, 不餵 spec, 就可以餵錯的觀念給學生?
12/01 11:59, 52F

12/01 11:59, , 53F
不能接受就當我在放屁
12/01 11:59, 53F

12/01 11:59, , 54F
要說明 break 的用途, 簡單說是用來跳出 switch 和
12/01 11:59, 54F

12/01 11:59, , 55F
do/for/while loop 不就行了嗎? 為什麼硬要把 switch
12/01 11:59, 55F

12/01 11:59, , 56F
說成 loop?
12/01 11:59, 56F

12/01 12:00, , 57F
我的前提是只跑一次的迴圈, 我有說他可以跑很多次?
12/01 12:00, 57F

12/01 12:01, , 58F
還有, "原Po 能接受就好"? 我看推文的討論, 原 po 看完
12/01 12:01, 58F

12/01 12:01, , 59F
前提就打死了迴圈這個假設, 說迴圏只是要帶出關鍵字
12/01 12:01, 59F

12/01 12:01, , 60F
你的 "解釋" 還是不明白耶, 這叫能接受?
12/01 12:01, 60F

12/01 12:01, , 61F
還有, 討論就是大家能給意見, 你又要說錯又要教錯又要
12/01 12:01, 61F

12/01 12:02, , 62F
不給別人給意見, 這是討論的好態度嗎?
12/01 12:02, 62F

12/01 12:02, , 63F
那就當我在放屁吧, 你覺得好就提你的比喻吧, 不要只說
12/01 12:02, 63F

12/01 12:02, , 64F
我的很爛
12/01 12:02, 64F

12/01 12:03, , 65F
的確超爛為什麼我不能說? 至少我說得出爛在哪
12/01 12:03, 65F

12/01 12:03, , 66F
我不是不准其他人討論, 而是某大的推文一直都是只說徵
12/01 12:03, 66F

12/01 12:04, , 67F
結, 不提例子, 這樣是討論嗎?
12/01 12:04, 67F

12/01 12:16, , 68F
我不明白你說的所謂 "只說癥結不提例子" 是什麼意思.
12/01 12:16, 68F

12/01 12:17, , 69F
別人只是指正你說的資料不正確, 能說得出癥結就很好呀
12/01 12:17, 69F

12/01 12:18, , 70F
, 另, 既能提到你的錯誤在哪, 為啥要提例子?
12/01 12:18, 70F

12/01 12:19, , 71F
ㄆㄆ
12/01 12:19, 71F

12/01 12:21, , 72F
好 原 PO 知道我的資料錯了, 那正確的資料某大有給嗎?
12/01 12:21, 72F

12/01 12:23, , 73F
倒也不用提個比喻, 像 lovef 大也會特地找規格書明文
12/01 12:23, 73F

12/01 12:24, , 74F
其他大也會找網路資料, 還是某本教科書, 你說我錯了,
12/01 12:24, 74F

12/01 12:25, , 75F
這件事對導正原PO概念沒什麼幫助, 但是你 11:59 所說
12/01 12:25, 75F

12/01 12:25, , 76F
就有導正的效果, 這是正面的例子, 而不是不講什麼話就
12/01 12:25, 76F

12/01 12:26, , 77F
要別人去翻教科書, 其實那幾推對原PO沒幫助
12/01 12:26, 77F

12/01 12:27, , 78F
我不是要戰, 大家都是基於幫助原PO的立場, 不要到最後
12/01 12:27, 78F

12/01 12:28, , 79F
推來推去, 樓主半點資訊都沒吸收到
12/01 12:28, 79F

12/01 12:42, , 80F
原因就出在我用字有出錯, 應該更嚴謹一點的, 造成誤會
12/01 12:42, 80F

12/01 12:43, , 81F
真不好意思 @_@
12/01 12:43, 81F

12/01 12:44, , 82F
某a抓著人家語病猛打不覺得很無聊嗎
12/01 12:44, 82F

12/01 13:04, , 83F
大家消消氣...聽首歌...好嗎? http://tinyurl.com/qhybnl
12/01 13:04, 83F

12/01 14:08, , 84F
樓上裝張爸失敗
12/01 14:08, 84F
文章代碼(AID): #1Cz7YVn6 (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Cz7YVn6 (C_and_CPP)