1樓:匿名使用者
case後可以跟
字元,但必須是常量字元,常量字元就是用單引號引起來的字元,如:'a' , '+','.'等
char ch;
ch=getchar();
switch( ch )
{case 』+『:printf("...")
2樓:匿名使用者
可以,但是單個字元應該用單引號引起來:
case 『+』:printf("...")
3樓:月光下的狼
可以跟字元,但是應該是case '+':
c語言中的switch語句,case後面可不可以跟一表示式,例如「100>x>50」;如不可以為什麼?
4樓:愛夏的你呀
不能,case後面是常量表示式。
要注意 case 表示式裡各個分支返回的資料型別是否一致。某個分支返回字元型,而其他分支返回數值型的寫法是不正確的。
使用 case 表示式的時候,最容易出現的語法錯誤是忘記寫 end 。雖然忘記寫時程式會返回比較容易理解的錯誤訊息,不算多麼致命的錯誤。而執行時卻出錯的情況大多是由這個原因引起的。
case表示式的執行結果是 null 。但是不寫可能會造成"語法沒有錯誤,結果卻不對"這種不易追查原因的麻煩,所以寫上 else 子句(即便是在結果可以為 null 的情況下)。
擴充套件資料
1、case表示式的真假值判斷就會中止,而剩餘的 when子句會被忽略。為了避免引起不必要的混亂,使用 when子句時要注意條件的排他性。
2、當case後的表示式的值與switch表示式的值相等時, 即執行對應case後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。如表示式的值與所有case後的常量表示式均不相同時,則執行default後的語句。
5樓:起個名好難
不可以,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是或的關係。
6樓:匿名使用者
switch語句非常有用,但在使用時必須謹慎。所寫的任何switch語句都必須遵循以下規則: 只能針對基本資料型別使用switch,這些型別包括int、char等。
對於其他型別,則必須使用if語句。 case標籤必須是常量表示式(constantexpression),如42或者"42"。如果需要在執行時計算case標籤的值,必須使用if語句。
case標籤必須是惟一性的表示式;也就是說,不允許兩個case具有相同的值。 c語言switch應用例子: 例一:
#includeint main() } 像你的50 7樓:匿名使用者 不可以,case後面需要跟乙個常量。如果你想要實現以範圍區分,可以使用多個if語句來實現。 8樓:匿名使用者 100>x&&x>50 c語言中case後面的值必須是整型嗎 9樓:藍風停 你可以case 『a』;/這是其實也是轉成ascii形式了 a的ascii是97,就是case 97; 10樓:風情a飛少 只能針對基本資料型別使用switch,這些型別包括int、char等 這個是使用switch的要求哦 c語言中加減乘除是字元嗎?可不可以用在case選擇語句中 11樓:匿名使用者 加上單引號括起來就是字元了,例如'+'。可以用在case中 12樓:匿名使用者 如:char c='*'; int a=1,b=2,s; switch(c) c語言中printf,if,case的用法 13樓:一劍傾心頂你 printf位於stdio.h標頭檔案下的輸出,用來列印字元 if判斷條件成立與否 case和switch一般配合使用 c語言中用switch語句的時候,為什麼有些case後面沒有語句的,如case10: case9:printf("優秀"); 14樓:匿名使用者 c語言中 switch語句其實每個case都會判斷的,所以要用break跳出有時候兩個不同的case需要做相同的處理 例如case10 case 9都是優秀 那麼 case10: 之後不寫任何語句,也不寫break那麼也會執行緊跟著的case 9:後面的語句,顯示優秀就應為用這樣的極值,所以在正常的case情況執行完後,要記得加break 而在多個case有共同操作的時候,可以把他們寫在一起中間都不用break 最後只用寫一次共同操作的**,乙個break 15樓:匿名使用者 後面沒有break就會一直執行下去,沒語句也一樣,9,10都會輸出「優秀」 16樓:wolf_騎士 它的意思是,switch中的值位10或者為9時,都直接執行到printf("優秀"),相當於兩個分支走同乙個處理結果。轉換成if 。。。else。。。處理就是 if(value == 9 || value == 10) printf("優秀"); 17樓:prince小寶巨蟹 沒有就沒有唄。。。switch語句就是按照case順序下來的 有就case裡面的內容,沒有就不執行 18樓:春風不醉人 如你舉的例子,case10和case9都執行「printf("優秀");」語句。 19樓:匿名使用者 這兩個case是合併的,處理方式一樣 c語言中case的意思和用法 20樓:大野瘦子 case 是開關語句的乙個組成部分。 用法:case 下面必須是整型常數。 冒號和break;之間是滿足這個case時要執行的語句。 例如:switch (整型表示式) 當整型表示式得1,列印字串 "case 1" 當整型表示式得2或5,列印字串 "case 2 or 5" c語言case的使用注意問題 #include int main() //getchar(); //getchar(); setbuf(stdin,null); char j; scanf ("%c", &j); switch (j) /* getchar(); getchar(); char k; scanf ("%c", &k); switch (k) {case "a":這裡是錯誤的也就是說case後面只能跟整形和與整形通用的字元型並且只能是字元而不能是字串 printf ("this is a\n"); break; default: printf ("this is default\ 21樓:楓璽 c語言中case是和switch一起使用的,構成switch—case語句 ,進行判斷選擇,case是用來表示選擇結構的。 switch語句的一般形式為: switch(表示式) 其語義是:計算表示式的值。 並逐個與其後的常量表示式值相比較,當表示式的值與某個常量表示式的值相等時, 即執行其後的語句,然後不再進行判斷,繼續執行後面所有case後的語句。 如表示式的值與所有case後的常量表示式均不相同時,則執行default後的語句。 擴充套件資料 任何switch語句都必須遵循以下規則: 1、只能針對基本資料型別中的整型型別使用switch,這些型別包括int、char等。對於其他型別,則必須使用if語句。 2、switch()的引數型別不能為實型 。 3、case標籤必須是常量表示式(constantexpression),如42或者"42"。 4、case標籤必須是惟一性的表示式;也就是說,不允許兩個case具有相同的值。 22樓:凡筱雲 case是用於開關語句中的關鍵字。開關語句,又稱switch語句,由關鍵字switch搭配若干個case及可能存在的default語句,共同組建成的一種分支結構語句。 case常量表示式只是起語句標號的作用,並不是在該處進行判斷。在執行 switch 語句時,根據 switch 後面表示式的值找到匹配的入口標號,就從此標號開始執行下去,不再進行判斷。 每個 case 後面「常量表示式」的值必須互不相同,否則就會出現互相矛盾的現象,而且這樣寫造成語法錯誤。各個 case 和 default 的出現次序不影響執行結果。但從閱讀的角度最好是按字母或數字的順序寫。 擴充套件資料:case 是開關語句的乙個組成部分。 case 下面必須是整型常數. 冒號和break;之間是滿足這個case時要執行的語句。 switch (整型表示式) 上例,當整型表示式得1,列印字串 "case 1" 當整型表示式得2或5,列印字串 "case 2 or 5" 23樓: switch (整型表示式) case 是開關語句的乙個組成部分。 case 下面必須是整型常數. 冒號和break;之間是滿足這個case時要執行的語句。 上例,當整型表示式得1,列印字串 "case 1" 當整型表示式得2或5,列印字串 "case 2 or 5" 從首字母開始,比較字元的大小,如果一個a可通用,一個b開頭,那麼a開頭的 就大,則相減結構為正 字串不能相減,但你可以用strcmp來做比較,其實該函式也是從字串的首地址開始比較字元的ascii碼 金色潛鳥 1 c語言中沒有 字串相減 運算。2 c語言中 有 單個字元 相減 運算。例如,把字串 12... 你好!這樣做是可以的,注意書寫格式,便於以後自己閱讀回程式方便 include int main break 當然可以bai switch a 因為要碰到break才能跳出,所以還有這種用答法switch a case後面是整型或字元型常量表示式,因此程式塊是不可取的。希望能採納 可以,但是不建議這... r 這是個字元陣列,系統只為它分配了3個位元組的空間,但是strlen只有遇到 0 才會返回 於是它會向後繼續進行,直到有 0 這其實是越界 或許沒有,可能訪問的是q 10 了.你可以這樣 printf s n r 來檢視下列印的資訊。在我的上面 tc 是 3 3 3 9 哎。strlen 是在st...c語言中字串相減是什麼意思,C語言中字串相減是什麼意思
請問c語言中switch中的case的冒號後面能加程式塊嗎?初學,望大神指教
c語言中關於字元陣列的長度問題,C語言中關於字元陣列的長度問題