為什麼c語言的switch語句中的case後面不能加英文字

2021-04-17 21:09:07 字數 5659 閱讀 4669

1樓:匿名使用者

case 後面必須是整數 或者 ascii 碼錶裡面的字元。

字母可以寫成 case 'a': case 'a': 這樣。

2樓:匿名使用者

#include

int main()

return 0;}

這是我du試過的zhi,可以啊!

你可以複製dao我的試試看!

看看是專不是軟

屬件問題吧!

3樓:匿名使用者

case裡面只能是一個定值,和if語句差不多,你總不能說if(i == %d)這樣吧,%d又不是一個定值

4樓:流星不死

只能加常量

int型或char型

如 1,2 'a','b'

5樓:奕馳申屠揚

default

拼寫錯誤

你的while(1)是個無限迴圈語句,當執行到switch後,如果回沒有滿足case的情況,根本不答會執行到default語句,也就是switch不起作用了,b未賦任何值,也就不會輸出任何字元,再次迴圈到程式的起始位置,執行再輸入;如果滿足case情況,仍可以輸出。

6樓:丁悌印堂

default

拼寫錯誤bai

你的while(1)是個無限迴圈語句

du,當執zhi行到switch後,如果沒有滿dao足回case的情況,根本不會執行到default語句,也就是答switch不起作用了,b未賦任何值,也就不會輸出任何字元,再次迴圈到程式的起始位置,執行再輸入;如果滿足case情況,仍可以輸出。

c語言裡switch語句為什麼case後面有的加break有的不加?

7樓:匿名使用者

case後面的常量表示式實際上只起語句標號作用,而不起條件判斷作用,即「只是開始執行處的入口標號」。

因此,一旦與switch後面圓括號中表示式的值匹配,就從此標號處開始執行;

而且執行完一個case後面的語句後,若沒遇到break語句,就自動進入下一個case繼續執行,而不再判斷是否與之匹配,直到遇到break語句才停止執行,退出switch語句。

因此,若想執行一個case分之後立即跳出switch語句,就必須在此分支的最後新增一個break語句。

8樓:y愛華

只要程式執行了break關鍵字,就跳出switch語句

9樓:匿名使用者

後面沒有語句,加不加意思都一樣,所形成的效果也一樣。

加上了更完美。

加上break;語句,執行完前面語句,到這兒跳出switch語句。

不加break語句,執行完前面的語句,到這兒也要跳出switch語句。

所以,加不加都一樣的。

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

10樓:愛夏的你呀

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

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

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

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

擴充套件資料

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

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

11樓:起個名好難

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

12樓:匿名使用者

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

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

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

  #includeint main()      } 像你的50

13樓:匿名使用者

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

14樓:匿名使用者

100>x&&x>50

c語言裡switch語句為什麼case後面有的加break有的不加?

15樓:笑看花開

在原始碼中分析應該如何使用,可以參考如下:

假設我們有如下這樣一個switch語句:

當我們在執行上面的方法時,如果我們傳入的引數是1,那麼會輸出1、2、3和default,如果傳入的引數是2,那麼會輸出2、3和default,這是為什麼呢?這是因為switch的case語句是用來根據滿足條件從確定的行開始執行的,如果不加入break語句跳出switch邏輯,則會一直往下執行,這也是為什麼上面的測試**會出現傳入引數為2時會輸出2、3和default。

為此,我們也可以看一下上面的**編譯後的class檔案,通過eclipse開啟後,我們可以看到如下內容:

上面編譯後的語句每行前面的數字是程式的指定序號,我們可以把它簡單的理解為行號,我們可以看到數字為1的那行定義了一個switch指定,其預設會跳到49行,如果傳入的引數是1則跳到28行執行,如果是2則跳到35行執行,如果是3則跳到42行執行。

那麼我們先來看程式的第28行到32行,其對應的就是呼叫system.out.println輸出1,完了後沒有特殊的指令,程式是會繼續順序執行的,也就是會依次執行35、38、直到57行結束。

如果我們把源程式的case語句末端都加上break語句,如下這樣:

那麼對應的編譯的class檔案通過eclipse開啟後可以看到如下內容:

我們可以看到switch語句預設會執行58行,如果傳入的引數是1則會執行28行,如果是2則會從38行開始執行,接著我們可以看到28行開始是執行的system.out.println(1)的邏輯,完了後會順序執行到35行,35行的指令是會載入程式執行到第66行,也就是跳出了switch邏輯,對應我們的測試**就是程式結束了。

c語言中用switch語句的時候,為什麼有些case後面沒有語句?

16樓:匿名使用者

c語言中

switch語句其實每個case都會判斷的,所以要用break跳出有時候兩個不同的case需要做相同的處理

例如case10 case 9都是優秀

那麼 case10: 之後不寫任何語句,也不寫break那麼也會執行緊跟著的case 9:後面的語句,顯示優秀就應為用這樣的極值,所以在正常的case情況執行完後,要記得加break

而在多個case有共同操作的時候,可以把他們寫在一起中間都不用break

最後只用寫一次共同操作的**,一個break

c語言switch語句中case後面不跟數字跟字母行不行?要怎麼做?

17樓:gta小雞

可以跟字元,如case 'a',等價於case 65,因為'a'的ascii碼值是65。不能跟字串,如case "a"。

c語言中switch中的case後面可以加判斷語句嗎

18樓:匿名使用者

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

switch(表示式)

switch語句的執行流程是:首先計算switch後面圓括號中表示式的值,然後用此值依次與各個case的常量表示式比較,若圓括號中表示式的值與某個case後面的常量表示式的值相等,就執行此case後面的語句,執行後遇break語句就退出switch語句;若圓括號中表示式的值與所有case後面的常量表示式都不等,則執行default後面的語句n+1

19樓:匿名使用者

不可以,case只能是常量

20樓:匿名使用者

不可以,這裡不適合用case

21樓:匿名使用者

那case後可以加abc之類嗎

c語言這個函式怎麼用switch語句來寫

include int main printf y d y c語言,用switch語句寫個選擇選單,case後面怎麼寫函式呼叫?呼叫下面的程式?學過呼叫函式吧,就是那麼呼叫的,當然也可以自己直接寫。舉個例子吧。資料a b,如果我想操作加減乘除,那麼可以這麼寫 include void jiafa i...

C語言菜鳥問題,switch語句有點整不明白了

main case 2 a b break 此句和switch a 的case1中間沒有break所以也會執行a和b自加了一次,a 4,b 2 default a printf a d,b d n a,b 由於b 0 所以執行了 case 0 a b case 1 a break 停止往下 然後ca...

c語言switch語句求大神解釋一下謝謝

switch k switch中的break作用是跳出switch塊。switch val switch的用法是判斷case後面的表示式和switch後面的表示式是否相匹配,一旦case匹配,就會順序執行後面的程式 而不管後面的case是否匹配,直到遇見break。switch ch switch中...