C語言中,swichcase語句中,case後面只能

2021-03-04 09:22:46 字數 4200 閱讀 1548

1樓:匿名使用者

準確的說case後面跟來的源是一個確定的值,由於常量表示式也好,邏輯表示式(在c語言中邏輯表示式的值只有兩種而且是整形數值1或者0)也好都是返回的一個確定的值。因此switch case語句中case後可以跟邏輯表示式。(注:

剛剛我試了一下,確實可以)

2樓:匿名使用者

switch 只能跟確定的值,而且只能是整形,字元型這些

3樓:匿名使用者

可以。常量表示式是指確定的數值。而邏輯表示式的結果只有1和0。

上機檢驗一

版下就知道了。

int x,y;

scanf("%d",&x);

switch(x)

printf("y=%d\n",y);

正常執行權。

4樓:匿名使用者

能,只要注意加花括號{}就行,像這樣case 1:;break;

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

5樓:愛夏的你呀

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

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

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

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

擴充套件資料

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

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

6樓:起個名好難

不可以,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是或的關係。

7樓:匿名使用者

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

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

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

#includeint main() } 像你的50

8樓:匿名使用者

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

9樓:匿名使用者

100>x&&x>50

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

10樓:文化廚子

是的,case語句來

後面的必須是整型常

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

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

switch(表示式)

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

11樓:匿名使用者

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

這個是使用switch的要求哦

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

12樓:匿名使用者

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

switch用法格式:

switch ( 表示式)

說明:break 表示退出

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

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

13樓:9號豬頭

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

switch 裡面一般是填變數名.

大概是這樣

int a;

switch(a)

14樓:寺地雅心

應該是不可以的。

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

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

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

c語言中switch語句中case後面的常量表示式是什麼?

15樓:

switch後面那個變數等於這個常量時,就執行case後的語句

16樓:匿名使用者

變數等於常量時就執行,但是執行之後沒有跳出去的話會連帶著下面的方案一起執行。

C語言賦值語句,C語言中賦值語句有什麼規則要求?

選ab中取模右邊不是整數 c中賦值號左側不是一個變數 d中第二個賦值號左側不是一個變數 c語言中通過 運算子來實現賦值,有時候也用它來進行初始化,在c語言中初始化和賦值是完全兩個不同的概念。比如下面的 int a 10 這是初始化a 0 10 這是賦值 初始化是一個順序點,編譯器保證每一個順序點都執...

C語言中的語句while scanfd dm,nEOF怎麼跳出這個while迴圈

linux系統下 需要輸入ctrl d 在windows下,也就是命令列視窗 需要輸入ctrl z在螢幕上出現 z後,再按回車即可。設計上是輸入兩次回車就退出 其實程式設計時,可以改為按某個鍵,退出迴圈的。ctrl z 再按一到兩次回車 vs要連續輸入三次 enter才行 關於c語言求精確解釋這個迴...

c語言for語句中的條件問題c語言中for語句是怎麼用的

1 for是c語言中的一個關鍵字,主要用來控制迴圈語句的執行。2 舉例說明for語句的使用方法 int i for i 0 i 3 i i 0是初始化部分 i 3是迴圈判斷條件部分 當滿足此條件時才進入執行for迴圈中的語句 i 是執行完迴圈體語句後的操作 上面的for語句就是控制輸出3次hello...