switch語句(初學者)
阿新 • • 發佈:2019-01-08
C語言提供了另一種用於多分支選擇的switch語句(常用於開關),一般形式為:
switch ( 常量表達式 ) { case 常量1 :語句; case 常量2 :語句; case 常量3 :語句; ... case 常量n:語句; default :語句; } 語義:計算常量表達式的值,並逐個與其後的常量值相比較,當表示式的值與某個常量值相等時,即執行其後語句,然後不再進行判斷,繼續執行後面所有case後的語句。若表示式的值與所有case後的常量值均不同時,則執行default語句。 錯例:#include<stdio.h> voidmain() { int a; printf("input integer number:"); scanf("%d",&a); switch(a) { case 1:printf("Monday\n"); case 2:printf("Tuesday\n"); case 3:printf("Wednesday\n"); case 4:printf("Thursday\n"); case 5:printf("Friday\n"); case 6:printf("Saturday\n");case 7:printf("Sunday\n"); default:printf("error\n"); } }
為避免上述輸出時出現的情況,C語言提供了一種break語句,專用於跳出switch語句,break語句只有關鍵字break,沒有引數。
正例:
#include<stdio.h> void main() { int a; printf("input integer number:"); scanf("%d",&a); switch(a) { case 1:printf("Monday\n");break; case 2:printf("Tuesday\n");break; case 3:printf("Wednesday\n");break; case 4:printf("Thursday\n");break; case 5:printf("Friday\n");break; case 6:printf("Saturday\n");break; case 7:printf("Sunday\n");break; default:printf("error\n");break; } }
注意:(1)在case後的各常量表達式的值不能相同,否則會出現錯誤。
(2)在case後允許有多個語句,可以不用{}括起來。
(3)各case和default子句的先後順序可以變動,而不會影響程式執行結果。
(4)default子句可以省略不用。
(5)只能針對基本資料型別中的整型型別使用switch,這些型別包括int、char等。對於其他型別,則必須使用if語句。
(6)switch()的引數型別不能為實型 。 (7)case標籤必須是常量表達式(constantExpression),如42或者"42"。 例:#include<stdio.h> int main() { char rank; printf("請輸入分數等級:(A、B、C、D、E)\n"); scanf("%c",&rank); switch(rank) { case'A':printf("A(90~100)\n");break; case'B':printf("B(80~89)\n");break; case'C':printf("C(70~79)\n");break; case'D':printf("D(60~69)\n");break; case'E':printf("E(0~59)\n");break; default:printf("error!\n");break; }