看板 C_and_CPP 關於我們 聯絡資訊
各位板友大家好 小弟來問個問題 因程式碼需求 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
windincloud:轉大小寫? toupper()? 說實話 我沒看懂你的要求~ :p 04/22 01:15
不是轉大小寫 是大寫的情況對應小寫字元 小寫情況對應大寫字元 想在一個switch內完成 可是case後面只能接const不能更動(例如:case a+i:) 所以想問有沒有別的判斷法? ※ 編輯: SATSUGAI 來自: 61.227.181.51 (04/22 01:17)
Yshuan:所以你有4個case 而不是2個 04/22 01:16
不懂樓上 ※ 編輯: SATSUGAI 來自: 61.227.181.51 (04/22 01:18)
Yshuan:case後面接的是ch的值 妳要ch=a時 case是B跟C那會跑default 04/22 01:19
goodGG:switch case不是這樣用的 04/22 01:38
goodGG:不熟的話用if-else就好了 04/22 01:38
orz 樓上誤會我的意思了 我會用switch case 只是我想更進階的做到我想要做到的事情 讓switch可以更活 case裡面的東西可變 這樣 ※ 編輯: SATSUGAI 來自: 61.227.181.51 (04/22 02:02)
windincloud:我猜你想做的應該是辦不到~ case 只會檢查你所傳進來 04/22 03:01
windincloud:不過你倒是在case內用if else判斷 互不相影響~ 04/22 03:02
MOONRAKER:兩層switch有什麼奇怪 新手就是很想簡化游泳跑步 04/22 06:35
MOONRAKER:或是想要不抬腿就走路 並且還要一邊跳芭蕾 -_- 04/22 06:40
FRAXIS:switch中的case只能是compile-time的常數 不能是變數 04/22 07:27
VictorTom:推M大, 學程式應該先徹底了解語法的用法或者相關限制. 04/22 09:04
VictorTom:才嘗試利用語法或設計特別的語意來搞所謂靈活的運動:) 04/22 09:05
cwhwillie:特地用switch來做到這件事並不會得到更多 04/22 18:29
nswrthh:switch裡面只能有常數,變數是不行的 04/22 21:58
sunneo:你乾脆改用map搭配char以及functor吧 04/22 22:42