C 的基礎知識。switch和case。case後面可以

2021-04-17 21:09:06 字數 4541 閱讀 8425

1樓:物理公司的

switch case

只支援整數和列舉型別

//一種偽的實現方式

include

using namespace std;

enum set ;

{ char str;

set temp;

cout << "please input a char: ";

cin>>str; // 獲取從螢幕中輸入的字元char2enum(str, temp); // 將字元str轉換為列舉temp

switch(temp) // 根據列舉的值,進行輸出{ case a:

cout<<'a'<

switch語句中的case後可以是字串嗎?

2樓:匿名使用者

case後面接的是狀態就是你定義的switch後面那個,可以定義req在某種狀態,這是字串表示的是一種模式或狀態

3樓:匿名使用者

可以吧,不過你怎麼用單引號括起來呢?

果然不可以。。。case後面的表示式必須能轉換成整數才行,就是說需要是字元和整數。。。

4樓:高金山

不可以的

bai,比如du下zhi面的程式:

dao#include

void main() }編譯

回都通不過:答

error c2450: switch expression of type 'char *' is illegal

error c2051: case expression not constant

5樓:匿名使用者

可以是單個字元

,不可以是字串

char p;

switch(p)

是可以的;

但是你的程式裡是多個字元,也專就是字屬符串,是不可以的

c語言switch語句中case後面必須要接整型常量和字元型常量嗎

6樓:文化廚子

是的,case語句來

後面的必須是整型常

源量!整型常量有多種,比如int、char、enum列舉常量,在c++中bool型別也屬於整型常量的一種。

//一般switch語句使用此種格式

switch(表示式)

switch是一個整型表示式。case是一個整數常量表示式。只所以不能使用浮點數,個人理解應該是浮點數的精度問題不容易把握,在一定誤差內可能出現多個匹配,而且浮點數對硬體依賴要求比較高,**可移植性可能會更低。

7樓:匿名使用者

只能針對基本資料型別使用switch,這些型別包括int、char等

這個是使用switch的要求哦

c語言中的switch語句,case後面可不可以跟一表示式,例如「100>x>50」;如不可以為什麼?

8樓:愛夏的你呀

不能,case後面是常量表示式。

要注意 case 表示式裡各個分支返回的資料型別是否一致。某個分支返回字元型,而其他分支返回數值型的寫法是不正確的。

使用 case 表示式的時候,最容易出現的語法錯誤是忘記寫 end 。雖然忘記寫時程式會返回比較容易理解的錯誤訊息,不算多麼致命的錯誤。而執行時卻出錯的情況大多是由這個原因引起的。

case表示式的執行結果是 null 。但是不寫可能會造成"語法沒有錯誤,結果卻不對"這種不易追查原因的麻煩,所以寫上 else 子句(即便是在結果可以為 null 的情況下)。

擴充套件資料

1、case表示式的真假值判斷就會中止,而剩餘的 when子句會被忽略。為了避免引起不必要的混亂,使用 when子句時要注意條件的排他性。

2、當case後的表示式的值與switch表示式的值相等時, 即執行對應case後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。如表示式的值與所有case後的常量表示式均不相同時,則執行default後的語句。

9樓:起個名好難

不可以,c語言中的switch case中的case後面僅可以跟整形常量或常量表示式

原因:如果case後面跟 100>x>50是會出現邏輯錯誤的。

首先c語言中像100>x>50這種表示式的意義並不和數學裡的一樣表示x落在(50,100)這個區間。這個在c語言中100>x會先被計算得到真或假。直接用關係運算得到的真和假在c語言中就是1或0。

而1或0是始終小於50的。這就導致這個表示式的值永遠為零。

常量表示式:在計算機程式語言中,若一個表示式的值不能發生改變,則稱之為常量表示式,如c++中有整型常量,字元常量,邏輯常量,實型常量,地址常量,符號常量,這些常量組成的表示式即為常數表示式。其中含有字元常量的常量表示式可稱為字元常量表示式。

整型常量:整型常量就是通常的整數,包括正整數、負整數和0,其資料型別顯然是整型。除此之外,整型常量包括短整型、長整型和無符號型等不同型別。

擴充套件資料

switch語句的用法和特點:

switch的用法是判斷case後面的表示式和switch後面的表示式是否相匹配,一旦case匹配,就會順序執行後面的程式**,而不管後面的case是否匹配,直到遇見break。

switch case 語句表示式為:

switch

當常量表示式所表達的量與其中一個case語句中的常量相符時,就執行此case語句後面的語句,並依次下去執行後面所有case語句中的語句,除非遇到break;語句跳出switch語句為止。如果常量表示式的量與所有case語句的常量都不相符,就執行default語句中的語句並跳出switch語句。

switch ...  case語句的特點:

1、把要討論的表示式與case後面的常量進行比較,發現匹配項之後,從該位置入口,做它下面的所有語句。

2、case 後面的常量不能重複

3、可以在每一個case語句的後面加上break語句,這樣就能保證只做與之相匹配的那一項。

4、break實質:在switch ...case語句裡面最先遇到那一個break就從該位置結束該語句

5、可以在最後一個case的下面加上default語句表示如果找不到匹配項時,就做default對應的項。

6、default並不是一定要有,如果前面遇到break,default就不執行。如果沒有遇到break,就一定會執行。

7、case後面的語句可以不執行,表示與下一個case是或的關係。

10樓:匿名使用者

switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則:   只能針對基本資料型別使用switch,這些型別包括int、char等。

對於其他型別,則必須使用if語句。   case標籤必須是常量表示式(constantexpression),如42或者"42"。如果需要在執行時計算case標籤的值,必須使用if語句。

  case標籤必須是惟一性的表示式;也就是說,不允許兩個case具有相同的值。   c語言switch應用例子:   例一:

  #includeint main()      } 像你的50

11樓:匿名使用者

不可以,case後面需要跟一個常量。如果你想要實現以範圍區分,可以使用多個if語句來實現。

12樓:匿名使用者

100>x&&x>50

c語言的switch case 語句的case 常量 能匹配字串常量嗎?

13樓:匿名使用者

c語言的switch case 語句的case不能匹配字串常量,只能匹配整型類常量,如int short long char.

switch用法格式:

switch ( 表示式)

說明:break 表示退出

case後面只能跟一個值(加冒號:),而不能是一個表示式switch(表示式) 後面沒有分號(;){}前後沒有分號(;)

default語句可以出現在任何位置,但建議寫到最後,表示除去case匹配之外的其它情況。也可以沒有default語句

14樓:9號豬頭

不可以匹配字串長量的.最大可以匹配一個int型的變數或常量.

switch 裡面一般是填變數名.

大概是這樣

int a;

switch(a)

15樓:寺地雅心

應該是不可以的。

但是你可以多增加一步,在swich前呼叫compare函式,比較你得到的字串和你的case中的字串,得到-1,0,1再進行swich。

不過我想這樣應該不會方便,還不如用if...else if...else來的快哦!

swich語句的侷限性還是蠻大的,處理這種複雜資料、複雜邏輯的時候最好用if~

教師基礎知識和教育基礎知識的區別

教師基礎知識,是教師作為教育教學活動中的主導者必備的基礎知識,包括教師文化素質,表達能力,寫字 計算機水平以及接受新知識的能力等等素質。教育基礎知識,是面向學生群體的,為學生將來的學習打基礎的知識,包括聽說讀寫能力 計算能力以及思維能力等等。以上為本人原創,雖未經斟酌,但已應具大概 教育綜合知識 教...

關務基礎知識,公共基礎知識A類,B類C類 有什麼不同

關務的概念就是通關事務,是企業涉及的貨物進出口業務以及相關海關監管業務的統稱,不是單純指的報關,報關只是其中一個部分。這裡面的繁瑣性以及複雜性非常強,也會因為地區不同和 型別側重點的不同出現非常大的差異。你先要認清自己接觸的是哪個方面的內容或者說你公司是做什麼為主,加工 進出口 等等。再根據這個方向...

強電弱電基礎知識,電工入門基礎知識,強電和弱電的區別

強電一般指生活中用的交流220v照明電和380v動力電 冰箱 電風扇 三相電機等等。弱電指電子電器儀表所用的36v及以下電壓 工廠用電子儀表 家庭電動車充電器 汽車電路 等等 計算公式 p 功率 u 電壓 i 電流 建築中的一般都是強電 安防中用弱電 電子監控中用弱電 家庭中強弱電都有。你用的數字顯...