[问题] C贪食蛇问题

楼主: a71245969 (熊怪唉优)   2020-07-19 21:52:34
板上大家好,小弟又来发问了
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
拜托各位大大解惑了!
作者: bluesoul (忙死你老爸)   2020-07-19 22:00:00
方向是数字还是字符?switch建议加上default
作者: mmmmei (mmm煤)   2020-07-19 22:01:00
你的case 是文字的‘1234’ 不是数字的1234
作者: Lipraxde (Lipraxde)   2020-07-19 22:31:00
用 switch 要记得写 default 啊
作者: loveme00835 (发箍)   2020-07-19 22:42:00
用 switch 不建议加 default label
作者: Lipraxde (Lipraxde)   2020-07-19 22:47:00
真假@@,我几乎都会加耶
作者: loveme00835 (发箍)   2020-07-19 22:50:00
使用 default 编译器就没机会帮你找出未处理的 case而 non-enum 也要好好考虑是否真的适用 switchhttps://godbolt.org/z/9Ws5v3写 C++ 最重要的概念是把检查的工作都交给编译器, 编得过的程式码就不容易出错上面程式码应该下 -Wswitch 搭配 default 0rz比较好的设计是把输入和程式内部表示分开, switchover char 是权责没有分离的例子, 既然 switch 的label 数量是固定的, 就没道理使用 char 来表示方向,一来不能用程式码来阐述设计, 二来因为値域太大的关系, 所有接口以及运算都是潜在会出 bug 的地方
作者: Lipraxde (Lipraxde)   2020-07-19 23:16:00
加 unreachable 也不会报错,确实不该无脑用 default

Links booklink

Contact Us: admin [ a t ] ucptt.com