c語言,case1後面沒有語句就是指和case2後面的語句相同?還有為什麼ar 9輸出了2次?不是

2021-04-17 21:09:07 字數 5120 閱讀 7861

1樓:匿名使用者

case1 執行

無** 因為前面有個for迴圈 因此switch語句執行三次 j=3時

專 執行case3 結束 j=2時 執行case2 結束 j=1時 因為case1無break; 因此要執行到屬case2才能跳出

其中--i 和i++的區別時 前者是先減一再使用 後者是 使用後再加1 因此程式分別輸出

ar=9 ; ar=9 ;ar=11

2樓:匿名使用者

j = 3時,

baii = 5,執行pr(a[--i]);後,輸出duar=9,i更新為zhi5

j = 2時,daoi = 4,執行pr(a[i++]);後,輸出內ar=9,i更新為5

j = 1時,i = 5,執行pr(a[i++]);後,輸出ar=11,i更新為6

綜上容,**的輸出為:

ar=9ar=9ar=11

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

3樓:匿名使用者

c語言中

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

例如case10 case 9都是優秀

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

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

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

4樓:匿名使用者

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

5樓:wolf_騎士

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

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

printf("優秀");

6樓:prince小寶巨蟹

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

7樓:春風不醉人

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

8樓:匿名使用者

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

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

9樓:匿名使用者

c語言中

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

例如case10 case 9都是優秀

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

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

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

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後是常量表示式: 為什麼有的後面沒有寫任何語句序列?什麼意思

15樓:小馬千紙鶴

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

16樓:黑幕

switch(i)

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

c語言case語句空著是什麼意思,表示case0和case1後面是一樣的嗎

17樓:匿名使用者

如果cmd = 0; switch中就會執行「case 0:」語句,因為「case 0:」後面沒有「break;」,程式就會繼續執行下去,執行「case 1:

」語句;直到執行到「break;」語句才退出switch語句。

所以在你的程式中,cmd = 0 和 cmd = 1執行的過程是一樣的;

18樓:匿名使用者

是的! cmd=0和1都將執行1後面的語句

c語言的case後可以是表示式嗎?像這樣:case 2+1 switch是3的時候會進入這條語句嗎

19樓:莊政警

可以,case 2+1:就是case 3:

case後面可以是表示式,但必須是常量表示式,編譯期就能確定的值int a=0;

int n=0;

.........................

switch(a)

{case 'a'+'b': //這個可以case sizeof(n)+1: //這個可以case n: //這個不可以,n的值在編譯期無法確定}

20樓:夏末煙雨

我經用: var a=5; swicth(true){ case (a>5): //執行語句 break; case (a+5==一0): //執行語句 break;

21樓:匿名使用者

不可以,只能是一個確定的整數型別的值。

二級c語言case 1跟case 1的區別1和11什麼意思

1 是字元常量,等於 它的 ascii 值,好像是 十進位制 49。字元 1。case 1 是 case 49 case 1 是 case 1 1 和 11 是 8 進位制 case 1 中的 1 是字元1,其值為十進位制49,所以它與case 49是一個意思 而case 1中的1是數字1,就是十進...

在c語言中,if語句後面的else語句中能不能巢狀for迴圈

在c語言中,if.else分支語句與for迴圈語句和其他迴圈及分支都是可以巢狀使用的,也就是說在if語句後面和else語句後面都是可以使用for迴圈語句的,例如 給定一個整數n,判斷這個整數n是不是小於2,如果小於2則提示給定數值不在有效範圍內,否則計算從1到n的累加和。int sum 0 if n...

請問c語言在for語句中不賦初值,沒有表示式1,將會是什麼情況?沒有表示式3只有表示式1,2時

沒有表示式1,如果迴圈變數在前面初始化了,不會有任何問題 沒有3的話,如果也沒有在迴圈體內修改迴圈變數的值,往往是死迴圈 表示式1和3是可選的 表示式2必須要有,是什麼情況呢 反正就是每次迴圈結束 判斷一下表示式2 真就繼續走 假就跳出 至於你還能不能跳出來了 那就看for裡面的東西了 c語言中fo...