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