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

2021-03-27 06:16:36 字數 6251 閱讀 6557

1樓:小馬千紙鶴

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

2樓:黑幕

switch(i)

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

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

3樓:匿名使用者

c語言中

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

例如case10 case 9都是優秀

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

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

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

c語言中用switch語句的時候,為什麼有些case後面沒有語句的,如case10: case9:printf("優秀");

4樓:匿名使用者

c語言中

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

例如case10 case 9都是優秀

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

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

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

5樓:匿名使用者

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

6樓:wolf_騎士

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

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

printf("優秀");

7樓:prince小寶巨蟹

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

8樓:春風不醉人

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

9樓:匿名使用者

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

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

10樓:匿名使用者

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

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

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

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

11樓:y愛華

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

12樓:匿名使用者

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

加上了更完美。

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

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

所以,加不加都一樣的。

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

13樓:

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

14樓:匿名使用者

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

switch語句中,case後面的語句序列中一定要有break語句嗎?

15樓:匿名使用者

不一定的。

switch 語句一行接一行地執行(實際上是語句接語句)。開始時沒有**被執行。僅當乙個 case 語句中的值和 switch 表示式的值匹配時才開始執行語句,直到 switch 的程式段結束或者遇到第乙個 break 語句為止。

如果不在 case 的語句段最後寫上 break 的話,**將繼續執行下乙個 case 中的語句段,因此,break語句的新增需要根據程式的邏輯來選用,如果有需要程式執行連續執行符合條件的case中的**,則不應該新增break而使得程式結束跳出。

擴充套件資料:

switch語句規則:

1、只能針對基本資料型別中的整型型別使用switch,這些型別包括int、char等。對於其他型別,則必須使用if語句。

2、switch()的引數型別不能為實型 。

3、case標籤必須是常量表示式(constantexpression),如42或者'4'。

4、case標籤必須是惟一性的表示式;也就是說,不允許兩個case具有相同的值。

5、switch語句的語法如下(switch,case,break和default是關鍵字):

switch ( 變數表示式 )

16樓:匿名使用者

在 switch 語句中使用break語句將終止語句的序列。當遇到 break語句時,程式將整個 switch 語句後面的一行**處開始執行,就有一種跳出switch 語句的效果。

break 語句是可選的,如果省略掉break 語句程式將執行下一條 case ,如果你需要使用多條 case ,你可以不用沒有 break 語句。

switch 語句的使用在多選擇的時候要比 if else 執行效率要高。

17樓:匿名使用者

最好跟上。因為switch的工作原理,一旦發現匹配,就一直執行,不在判斷。

例int a=2

switch(a)

如若不加break,switch發現2匹配,首先執行printf("2");

然後再不判斷,

printf("3");

printf("4");

也執行了。這應該不是你的本意吧。所以最好每個case後面都加break。

18樓:匿名使用者

可以不有,那有幾個case就會執行幾個。舉個例子:switch(k),case1:

case2:case3假如有這3個case,如果沒有break,當k=1時,這三個都會執行,當每個都有break時,k=1時,case2, case3就不會執行。

19樓:匿名使用者

你知道break的意思嗎?如果沒有break,程式還會繼續走後面的判斷

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

20樓:文化廚子

是的,case語句來

後面的必須是整型常

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

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

switch(表示式)

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

21樓:匿名使用者

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

這個是使用switch的要求哦

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

22樓:愛夏的你呀

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

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

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

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

擴充套件資料

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

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

23樓:起個名好難

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

24樓:匿名使用者

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

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

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

  #includeint main()      } 像你的50

C語言,分別用if語句和switch語句編寫程式求分段函式

if語句 inlcude include define a 10 a自己取值 void main switch語句 include include define a 10 a自己取值 void main matlab分段函式用switch程式設計 不要if語句的 50 clear a input i...

C語言中,while語句中如果有是int y 10 whiley 那麼while中的判斷條件是什麼

這裡,先進行y y 1,然後判斷的條件就是 y 0,也就是說,判斷y自減1之後是否為0,不為0則為true,否則為false。等價於while y 希望可以解決你的疑問 while y 這個是先做y y 1 然後判斷表示式是 y 0 是先減再判斷的 while y 這個 在後面,是先判斷y 0再 w...

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

當m 1的時候 就進入第二個迴圈 此時的m經過 後就等於2 當第二個迴圈的n累加到k的時候,就跳出第二個迴圈 返回第乙個迴圈這時m 2,進入第二個迴圈n又重0開始,當n累加到k的時候又會返回到第乙個迴圈的了 一直如此迴圈下去 直到m也累加到k的時候整個迴圈都會推出的了 a為啥要從0開始,那就只有從這...