switch case語法詳解:
1、switch是“開關”的意思,它也是一種“選擇”語句,但它的用法非常簡單。
2、switch是多分支選擇語句。說得通俗點,多分支就是多個if。
從功能上說,switch語句和if語句完全可以相互取代。但從編程的角度,它們又各有各的特點,所以至今為止也不能說誰可以完全取代誰。
3、當嵌套的if比較少時(三個以內),用if編寫程序會比較簡潔。但是當選擇的分支比較多時,嵌套的if語句層數就會很多,導致程序冗長,可讀性下降。因此C語言提供switch語句來處理多分支選擇。所以if和switch可以說是分工明確的。在很多大型的項目中,多分支選擇的情況經常會遇到,所以switch語句用得還是比較多的。
4、switch的一般形式如下:
switch(表達式) { case 常量表達式1: 語句1; break; case 常量表達式2: 語句2; break; … case 常量表達式n: 語句n; break; default: 語句n+1; break; }
小練習:
static void Main(string[] args) { /* 輸入成績,輸出成績的等級: 90以上為A,80-89為B,70-79為C,60-69為D,60分以下為E, 輸入大於100或小於0時輸出“成績輸入錯誤” */ Console.WriteLine("請輸入成績:"); int score; try { score = Convert.ToInt32(Console.ReadLine()); if (score > 100 || score < 0) { Console.WriteLine("成績輸入錯誤,請重新輸入:"); score = Convert.ToInt32(Console.ReadLine()); } else { switch (score / 10) { case 10: case 9: Console.WriteLine("A"); break; case 8: Console.WriteLine("B"); break; case 7: Console.WriteLine("C"); break; case 6: Console.WriteLine("D"); break; default: Console.WriteLine("E"); break; } } } catch { Console.WriteLine("輸入數據類型錯誤,程序退出!"); } }
擴展資料:
說明:
1)、switch后面括號內的“表達式”必須是整數類型。也就是說可以是int型變量、char型變量,也可以直接是整數或字符常量,哪怕是負數都可以。但絕對不可以是實數,float型變量、double型變量、小數常量通通不行,全部都是語法錯誤。
2)、switch下的case和default必須用一對大括號{}括起來。
3)、當switch后面括號內“表達式”的值與某個case后面的“常量表達式”的值相等時,就執行此case后面的語句。執行完一個case后面的語句后,流程控制轉移到下一個case繼續執行。如果你只想執行這一個case語句,不想執行其他case,那么就需要在這個case語句后面加上break,跳出switch語句。
再重申一下:switch是“選擇”語句,不是“循環”語句。很多新手看到break就以為是循環語句,因為break一般給我們的印象都是跳出“循環”,但break還有一個用法,就是跳出switch。
4)、若所有的case中的常量表達式的值都沒有與switch后面括號內“表達式”的值相等的,就執行default后面的語句,default是“默認”的意思。如果default是最后一條語句的話,那么其后就可以不加break,因為既然已經是最后一句了,則執行完后自然就退出switch了。
5)、每個case后面“常量表達式”的值必須互不相同,否則就會出現互相矛盾的現象,而且這樣寫造成語法錯誤。
6)、“case常量表達式”只是起語句標號的作用,並不是在該處進行判斷。在執行switch語句時,根據switch后面表達式的值找到匹配的入口標號,就從此標號開始執行下去,不再進行判斷。
7)、各個case和default的出現次序不影響執行結果。但從閱讀的角度最好是按字母或數字的順序寫。
8)、當然你也可以不要default語句,就跟if…else最后不要else語句一樣。但最好是加上,后面可以什么都不寫。這樣可以避免別人誤以為你忘了進行default處理,而且可以提醒別人switch到此結束了。
