switch语句语法:
switch(expression){ case constant-expression : statement(s); break; /* 可选的 */ case constant-expression : statement(s); break; /* 可选的 */ /* 可以有任意数量的 case 语句 */ default : /* 其他条件,可选的 */ statement(s); }
- switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。
- 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
- case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
- 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
- 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
- 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
- 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
示例代码:
#include <stdio.h> int main () { /*switch语句*/ char grade = 'B'; switch(grade) { case 'A' : printf("优\n" ); break; case 'B' : printf("良\n" ); break; case 'C' : printf("中\n" ); break; case 'D' : printf("不及格\n" ); break; default : printf("成绩无效\n" ); } printf("您的成绩是 %c\n", grade ); return 0; }
运行结果:
良
您的成绩是 B
- 无 break 语句的情况:
#include <stdio.h> int main () { /*switch语句*/ char grade = 'B'; switch(grade) { case 'A' : printf("优\n" ); break; case 'B' : printf("良\n" ); //break; case 'C' : printf("中\n" ); break; case 'D' : printf("不及格\n" ); break; default : printf("成绩无效\n" ); } printf("您的成绩是 %c\n", grade ); return 0; }
运行结果:
良
中
您的成绩是 B
例子:
#include <stdio.h> int main() { /*switch语句*/ int num; printf("请输入一个整数: "); scanf("%d",&num); switch(num) { case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期日\n"); break; default: printf("输入错误\n"); } }
运行结果:
请输入一个整数: 3 星期三