[問題] C貪食蛇問題

看板C_and_CPP (C/C++)作者 (熊怪唉優)時間5年前 (2020/07/19 21:52), 5年前編輯推噓0(0017)
留言17則, 4人參與, 5年前最新討論串1/1
板上大家好,小弟又來發問了 1.程式碼:https://0rz.tw/ORCNi 2.問題:程式中設定蛇轉向時(程式碼片段如下圖)使用switch來做多重選擇會使程式crash 但用if-else或if-if撰寫都正常,想請問原因為何? https://imgur.com/gxWfqTD
3.使用if-if或if-else之寫法: (1)if-if:https://imgur.com/s9gDHJs
(2)if-else:https://imgur.com/dUe7ybw
拜託各位大大解惑了! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.148.102 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1595166757.A.4CA.html ※ 編輯: a71245969 (49.216.228.58 臺灣), 07/19/2020 21:53:44

07/19 22:00, 5年前 , 1F
方向是數字還是字元?switch建議加上default
07/19 22:00, 1F

07/19 22:01, 5年前 , 2F
你的case 是文字的‘1234’ 不是數字的1234
07/19 22:01, 2F
感謝上面兩位大大,抱歉問了個蠢問題QQ P幣不多還請包涵 ※ 編輯: a71245969 (49.216.228.58 臺灣), 07/19/2020 22:11:03 ※ 編輯: a71245969 (49.216.228.58 臺灣), 07/19/2020 22:29:36

07/19 22:31, 5年前 , 3F
用 switch 要記得寫 default 啊
07/19 22:31, 3F

07/19 22:42, 5年前 , 4F
用 switch 不建議加 default label
07/19 22:42, 4F

07/19 22:47, 5年前 , 5F
真假@@,我幾乎都會加耶
07/19 22:47, 5F

07/19 22:50, 5年前 , 6F
使用 default 編譯器就沒機會幫你找出未處理的 case
07/19 22:50, 6F

07/19 22:51, 5年前 , 7F
而 non-enum 也要好好考慮是否真的適用 switch
07/19 22:51, 7F

07/19 22:51, 5年前 , 8F

07/19 22:52, 5年前 , 9F
寫 C++ 最重要的概念是把檢查的工作都交給編譯器, 編
07/19 22:52, 9F

07/19 22:53, 5年前 , 10F
得過的程式碼就不容易出錯
07/19 22:53, 10F

07/19 22:57, 5年前 , 11F
上面程式碼應該下 -Wswitch 搭配 default 0rz
07/19 22:57, 11F

07/19 22:59, 5年前 , 12F
比較好的設計是把輸入和程式內部表示分開, switch
07/19 22:59, 12F

07/19 23:01, 5年前 , 13F
over char 是權責沒有分離的例子, 既然 switch 的
07/19 23:01, 13F

07/19 23:02, 5年前 , 14F
label 數量是固定的, 就沒道理使用 char 來表示方向,
07/19 23:02, 14F

07/19 23:03, 5年前 , 15F
一來不能用程式碼來闡述設計, 二來因為値域太大的關
07/19 23:03, 15F

07/19 23:05, 5年前 , 16F
係, 所有介面以及運算都是潛在會出 bug 的地方
07/19 23:05, 16F

07/19 23:16, 5年前 , 17F
加 unreachable 也不會報錯,確實不該無腦用 default
07/19 23:16, 17F
文章代碼(AID): #1V550bJA (C_and_CPP)
文章代碼(AID): #1V550bJA (C_and_CPP)