[問題] 請問case有簡化的方法嗎?

看板C_and_CPP作者 (八卦蟑螂)時間6年前發表 (2018/08/31 09:17), 6年前編輯推噓5(506)
留言11則, 7人參與, 6年前最新討論串1/1
請問一下 之前在學verilog的時候 有辦法用X 或 Z的方式 忽略一個位元或01均可 像是 0010 0011 可以化簡成001X 不知道C裡面的case有類似這種功能嗎? 現在遇到的問題是 我寫到很多下面這種 10進制的四位數 switch(select) { . . . 3100 3101 3102 3103 . . } 有很多想把他化簡不知道怎麼做比較好 除了手動化簡 改用矩陣之外 不知道C家族有沒有這種化簡工具@@ 先謝謝了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.219.126 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1535707041.A.79E.html ※ 編輯: Neverfor (180.217.219.126), 08/31/2018 17:19:09

08/31 17:39, 6年前 , 1F
AND
08/31 17:39, 1F

08/31 19:07, 6年前 , 2F
如果無法條列出來就回歸到一般的 if/else if
08/31 19:07, 2F

08/31 19:08, 6年前 , 3F
C的case很簡單,沒有這種特異功能。有人把他倒過來寫,
08/31 19:08, 3F

08/31 19:09, 6年前 , 4F
很妙的是也沒問題,但是老是覺得哪裡會有side effect.
08/31 19:09, 4F

08/31 19:10, 6年前 , 5F
回到你的問題,你這種簡化要自己打造,case就當最簡單
08/31 19:10, 5F

08/31 19:10, 6年前 , 6F
的case用就好。
08/31 19:10, 6F

08/31 19:48, 6年前 , 7F
我的想法是,進switch前對select進行預處理,例如 select
08/31 19:48, 7F

08/31 19:48, 6年前 , 8F
= select/10
08/31 19:48, 8F

08/31 19:59, 6年前 , 9F
switch (h(select)) { ... }
08/31 19:59, 9F

08/31 21:25, 6年前 , 10F
case本來就不用照順序啊,default也可以放在任意位置
08/31 21:25, 10F

09/01 18:44, 6年前 , 11F
有整數範圍可以用gcc extension
09/01 18:44, 11F
感謝各位回覆 ※ 編輯: Neverfor (180.217.219.126), 09/01/2018 22:40:42
文章代碼(AID): #1RYGUXUU (C_and_CPP)