c語言switchcase字元
Ⅰ c語言的switch語句中case後()
選B,case後面只能是整型或字元型的常量或常量表達式。
一、switch是另外一種選擇結構的語句,用來代替簡單的、擁有多個分支的if else 語句,基本格式如下:
switch(表達式){
case 整型數值1: 語句 1;
case 整型數值2: 語句 2;
......
case 整型數值n: 語句 n;
default: 語句 n+1;
}
二、它的執行過程是:
1、首先計算「表達式」的值,假設為 m。
2、 從第一個 case 開始,比較「整型數值1」和 m,如果它們相等,就執行冒號後面的所有語句,也就是從「語句1」一直執行到「語句n+1」,而不管後面的 case 是否匹配成功。
3、如果「整型數值1」和 m 不相等,就跳過冒號後面的「語句1」,繼續比較第二個 case、第三個 case……一旦發現和某個整型數值相等了,就會執行後面所有的語句。假設 m 和「整型數值5」相等,那麼就會從「語句5」一直執行到「語句n+1」。
4、如果直到最後一個「整型數值n」都沒有找到相等的值,那麼就執行 default 後的「語句 n+1」。
(1)c語言switchcase字元擴展閱讀:
1、switch後面括弧內的【表達式】,ANSI標准允許它為任何類型;
2、當表達式的值與某一個case後面的常量表達式的值相等時,就執行此case後面的語句,否則,就執行default後面的語句。
3、每一個case的常量表達式的值必須互不相同,否則就會出現互相矛盾的現象(對表達式的同一個值,有兩種或多種執行方案)。
4、各個case各default的出現次序不影響執行結果。例如,可以先出現"default: ...",再出現"case 'D': ...",然後是"case 'A': ...".
5、執行完一個case後面的語句後,流程式控制制轉移到下一個case繼續執行。"case常量表達式"只是起語句標號作用,並不是在該處進行條件判斷。在執行swith語句時,根據switch後面表達式的值找到匹配的入口標號,就從此標號開始執行下去,不再進行判斷。
Ⅱ c語言中case的意思和用法
c語言中case是和switch一起使用的,構成switch—case語句,進行判斷選擇,case是用來表示選擇結構的。
switch語句的一般形式為:
switch(表達式){
case 常量表達式1: 語句1;
case 常量表達式2: 語句2;
…
case 常量表達式n: 語句n;
default: 語句n+1;}
其語義是:計算表達式的值。 並逐個與其後的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。如表達式的值與所有case後的常量表達式均不相同時,則執行default後的語句。
(2)c語言switchcase字元擴展閱讀
任何switch語句都必須遵循以下規則:
1、只能針對基本數據類型中的整型類型使用switch,這些類型包括int、char等。對於其他類型,則必須使用if語句。
2、switch()的參數類型不能為實型 。
3、case標簽必須是常量表達式(constantExpression),如42或者"42"。
4、case標簽必須是惟一性的表達式;也就是說,不允許兩個case具有相同的值。
Ⅲ c語言中switch怎麼可以用字元串作條件表達式
首先: switch 語句及case 的類型 表達式必須是整數、字元或枚舉量值。
超級好奇地編譯了一下:
1>e:\project\stl_proc\stl_proc\stl_proc\stl_proc.cpp(86) : error C2052: 「double」: 非法的 case 表達式類型
真是顛覆了我的三觀。。。。 switch('0.4') 竟然沒報錯。。 我把下面的修復了之後, 讓我們看看程序怎麼處理
改成:
switch('0.4')
{
case '0': a=0;break;
case'.': a=9;break;
default:a=7;
}printf("%d",a);
運行了一下, 都走到default 分支了 。
改成:
switch('0')
{
case '0': a=0;break;
case'.': a=9;break;
default:a=7;
}printf("%d",a);
全部走到 case 0 分支了。
結論: switch 後面可以不是一個變數。