目录
一、switch语句
语法
执行过程
流程图
示例
运行效果
温馨提示
一、switch语句
一个switch语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个switch case进行检查
语法
C 语言中switch语句的语法:
switch(expression){case constant-expression :statement(s);break; /* 可选的 */case constant-expression :statement(s);break; /* 可选的 *//* 您可以有任意数量的 case 语句 */default : /* 可选的 */statement(s);}
switch语句必须遵循下面的规则:
switch语句中的expression是一个常量表达式,必须是一个整型或枚举类型在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号case 的constant-expression必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到break语句为止当遇到break语句时,switch 终止,控制流将跳转到 switch 语句后的下一行不是每一个 case 都需要包含break。如果 case 语句不包含break,控制流将会继续后续的 case,直到遇到 break 为止一个switch语句可以有一个可选的defaultcase,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的break语句不是必需的
执行过程
它的执行过程是:
首先计算表达式的值,假设为value从第一个case开始,比较value和整型数值1,如果它们相等,就执行冒号后面的所有语句,也就是从语句1一直执行到语句n+1,而不管后面的case是否匹配成功如果value和整型数值1不相等,就跳过冒号后面的语句1,继续比较第二个case、第三个case……一旦发现和某个整型数值相等了,就会执行后面所有的语句。假设value和整型数值5相等,那么就会从语句5一直执行到语句n+1如果直到最后一个整型数值n都没有找到相等的值,那么就执行default后的语句 n+1需要重点强调的是,当和某个整型数值匹配成功后,会执行该分支以及后面所有分支的语句
流程图
示例
test19.c
#include <stdio.h>int main(){int day=0; // 定义一个整数变量用于接受键盘输入的数字printf("请输入0-6之间的数字:"); // 提示用户输入scanf("%d",&day); // 接受用户从键盘输入的数据switch (day){case 0:printf("星期天\n");break;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;default:printf("输入错误。\n");}}
运行效果
温馨提示
switch(result){case10:printf("...");break;//正确,整数case1+1:printf("...");break;//正确,表达式1+1==17是整数case'5':printf("...");break;//正确,字符可以转换为整数case'A':printf("...");break;//正确,字符可以转换为整数case'A'+10:printf("...");break;//正确,字符可以转换为整数case3.14:printf("...");break;//错误,不能为小数caseii:printf("...");break;//错误,不能采用变量}
case后面必须是整数和字符,或者是结果为整数和字符的表达式,但不能包含任何变量。请看下面的例子default不是必须的。当没有 default时,如果所有case都匹配失败,那么就什么都不执行