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

2021-03-27 06:16:37 字數 5501 閱讀 2013

1樓:匿名使用者

c語言中

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

例如case10 case 9都是優秀

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

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

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

2樓:匿名使用者

後面沒有break就會一直執行下去,沒語句也一樣,9,10都會輸出「優秀」

3樓:wolf_騎士

它的意思是,switch中的值位10或者為9時,都直接執行到printf("優秀"),相當於兩個分支走同一個處理結果。轉換成if 。。。else。。。處理就是

if(value == 9 || value == 10)

printf("優秀");

4樓:prince小寶巨蟹

沒有就沒有唄。。。switch語句就是按照case順序下來的 有就case裡面的內容,沒有就不執行

5樓:春風不醉人

如你舉的例子,case10和case9都執行「printf("優秀");」語句。

6樓:匿名使用者

這兩個case是合併的,處理方式一樣

c語言switch語句中case後是常量表示式: 為什麼有的後面沒有寫任何語句序列?什麼意思

7樓:小馬千紙鶴

那就是什麼都不執行,相當於空語句,空語句在哪都適用,望採納

8樓:黑幕

switch(i)

嗎?這種寫法是把012這三種情況綜合起來

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

9樓:匿名使用者

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

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

10樓:匿名使用者

#include

int main()

return 0;}

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

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

看看是專不是軟

屬件問題吧!

11樓:匿名使用者

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

12樓:流星不死

只能加常量

int型或char型

如 1,2 'a','b'

13樓:奕馳申屠揚

default

拼寫錯誤

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

14樓:丁悌印堂

default

拼寫錯誤bai

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

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

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

15樓:愛夏的你呀

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

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

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

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

擴充套件資料

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

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

16樓:起個名好難

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

17樓:匿名使用者

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

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

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

  #includeint main()      } 像你的50

18樓:匿名使用者

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

19樓:匿名使用者

100>x&&x>50

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

20樓:笑看花開

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

假設我們有如下這樣一個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後面沒有語句?

21樓:匿名使用者

c語言中

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

例如case10 case 9都是優秀

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

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

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

c語言中switch怎麼用,C語言中的SWITCH是什麼意思?

簡單的說switch語句也是屬於判斷語句,if else語句適合3個以內的判斷,但是多了用if就不太方便了,所以這時3個以上的判斷用switch語句就比較方便了,結構就像樓上的兄弟們那樣寫的,大概怎麼用我舉個例子你就懂了。例 判斷一週的食譜,就是星期幾的食譜是什麼,首先一個星期7天,那麼判斷七次,用...

C語言for迴圈,c語言中for語句是怎麼用的

為什麼?我想為你為什麼不知道原因,這是很簡單的邏輯推算題,一看就知道你的呼叫的函式返回值就是你的輸入值,我猜你是想要的結果是1,1 2,1 2 3,1 2 3 4,1 2 3 4 5是吧?呼叫函式的形參只是在你用的時候形成,當呼叫完畢就會釋放,j的運算結果不會保留在記憶體當中,因此你想要那種結果的話...

C語言中的開關語句是什麼,c語言開關語句是什麼?

你說的開關語句,應該是一種分支語句 格式如下 switch 條件 switch c語言開關語句是什麼?break在for迴圈來實現開關語句 while迴圈等迴圈流程控制中起的作用是停止執行break後面的語句,跳出本次迴圈,並跳出該迴圈控制體。c語言雖然沒有限制 if else 能夠處理的分支數量,...