Re: [語法] switch case
※ 引述《SATSUGAI (約翰‧克勞薩二世)》之銘言:
: 因程式碼需求
: 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"
你想做的是讓語言比較活,例如設定讓 'A' 符合 'a', 而讓 'b' 符合 'B'.
但是, switch-case 就是最基本的語法,而且沒有辦法擴充它語言的功能.
switch-case 的意思是,建立一個轉接點,在什麼情況可以轉接到什麼管道,
若像例子中大小寫恰好彼此互換,其實直接把case全都互換就好了.
而若是要把ch的大寫字母看成小寫,直接轉接成小寫字母,在語言能力可能做不到,
也許改成:
match = false;
do {
switch (ch) {
case 'a':
if (!match)
ch = 'A';
else {
do_a();
break;
}
case 'A'
if (!match)
ch = 'a';
else {
doA();
break;
}
case 'B':
...
default:
...
} while (!match && match = true);
}
目標達到了,但要多寫好多東西.
倒不如結構化設計程式:
if (ch >= 'A' && ch <= 'Z')
ch += ('a' - 'A');
if (ch >= 'a' && ch <= 'z')
ch -= ('a' - 'A');
switch (ch) {
case 'a':
do_a();
break;
case 'A':
doA();
break;
...
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.225.34
推
04/22 10:36, , 1F
04/22 10:36, 1F
→
04/22 10:36, , 2F
04/22 10:36, 2F
推
04/22 13:31, , 3F
04/22 13:31, 3F
這樣是沒錯啦,但是"防守範圍"沒那麼大,還是只換需求範圍內的東西就好.
此外,這是討論範圍之外的東西.
推
04/22 13:49, , 4F
04/22 13:49, 4F
→
04/22 13:50, , 5F
04/22 13:50, 5F
→
04/22 14:52, , 6F
04/22 14:52, 6F
※ 編輯: yauhh 來自: 59.112.225.34 (04/22 14:56)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章