[語法] switch case

看板C_and_CPP (C/C++)作者 (約翰‧克勞薩二世)時間16年前 (2009/04/22 00:58), 編輯推噓6(609)
留言15則, 9人參與, 最新討論串1/2 (看更多)
各位板友大家好 小弟來問個問題 因程式碼需求 switch(ch) { case ch1: do something; break; case ch2: do something; break; ... } 當ch是大寫A的時候,ch1是小寫b ch3是小寫c ch是小寫a的時候,ch1是小寫B ch3是小寫C 我打算寫成一個switch,然後用AscII去加減處理 可是compile以後出現錯誤訊息 "error: case label does not reduce to an integer constant" 意思應該是,case後面接的要是一個const 如果還要這樣做的話 是不是非得要用if來做了呢? 因為用if敘述比較長,囉嗦 雙switch感覺有些贅述 請問還有更好的方法嗎? 感謝 -- Johannes Krauser II 強暴!強暴!強暴!強暴!強暴!強暴! GO TO D.M.C ◥◣ ◥◣ 強暴!強暴!強暴!強暴!強暴! ▄▂▁▂▃▅▆▅ ▃▄ハ ∵ ∵ ▃▄▃ シ ▋▊▍ φjeans1020 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.181.51

04/22 01:15, , 1F
轉大小寫? toupper()? 說實話 我沒看懂你的要求~ :p
04/22 01:15, 1F
不是轉大小寫 是大寫的情況對應小寫字元 小寫情況對應大寫字元 想在一個switch內完成 可是case後面只能接const不能更動(例如:case a+i:) 所以想問有沒有別的判斷法? ※ 編輯: SATSUGAI 來自: 61.227.181.51 (04/22 01:17)

04/22 01:16, , 2F
所以你有4個case 而不是2個
04/22 01:16, 2F
不懂樓上 ※ 編輯: SATSUGAI 來自: 61.227.181.51 (04/22 01:18)

04/22 01:19, , 3F
case後面接的是ch的值 妳要ch=a時 case是B跟C那會跑default
04/22 01:19, 3F

04/22 01:38, , 4F
switch case不是這樣用的
04/22 01:38, 4F

04/22 01:38, , 5F
不熟的話用if-else就好了
04/22 01:38, 5F
orz 樓上誤會我的意思了 我會用switch case 只是我想更進階的做到我想要做到的事情 讓switch可以更活 case裡面的東西可變 這樣 ※ 編輯: SATSUGAI 來自: 61.227.181.51 (04/22 02:02)

04/22 03:01, , 6F
我猜你想做的應該是辦不到~ case 只會檢查你所傳進來
04/22 03:01, 6F

04/22 03:02, , 7F
不過你倒是在case內用if else判斷 互不相影響~
04/22 03:02, 7F

04/22 06:35, , 8F
兩層switch有什麼奇怪 新手就是很想簡化游泳跑步
04/22 06:35, 8F

04/22 06:40, , 9F
或是想要不抬腿就走路 並且還要一邊跳芭蕾 -_-
04/22 06:40, 9F

04/22 07:27, , 10F
switch中的case只能是compile-time的常數 不能是變數
04/22 07:27, 10F

04/22 09:04, , 11F
推M大, 學程式應該先徹底了解語法的用法或者相關限制.
04/22 09:04, 11F

04/22 09:05, , 12F
才嘗試利用語法或設計特別的語意來搞所謂靈活的運動:)
04/22 09:05, 12F

04/22 18:29, , 13F
特地用switch來做到這件事並不會得到更多
04/22 18:29, 13F

04/22 21:58, , 14F
switch裡面只能有常數,變數是不行的
04/22 21:58, 14F

04/22 22:42, , 15F
你乾脆改用map搭配char以及functor吧
04/22 22:42, 15F
文章代碼(AID): #19xViolM (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
3
6
完整討論串 (本文為第 1 之 2 篇):
3
6
6
15
文章代碼(AID): #19xViolM (C_and_CPP)