[爆卦]C switch case是什麼?優點缺點精華區懶人包

為什麼這篇C switch case鄉民發文收入到精華區:因為在C switch case這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者SATSUGAI (約翰‧克勞薩二世)看板C_and_CPP標題[語法] switch case...


各位板友大家好

小弟來問個問題

因程式碼需求

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

你可能也想看看

搜尋相關網站