新手制作网站工具seo推广网络
switch
语句概述
switch
语句是一种多路分支选择语句,它允许一个变量的值与多个case
标签进行比较,并执行与该值相匹配的case
块中的代码。其基本语法如下:
switch(表达式) { case 常量表达式1: 语句1; break; // 可选,用于跳出switch语句 case 常量表达式2: 语句2; break; // 可选 ... case 常量表达式n: 语句n; break; // 可选 default: 语句n+1; // 可选,当没有case匹配时执行
}
示例分析
以下是一个switch
语句的示例,用于根据输入的整数打印星期的名称:
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");
}
switch
语句与if
语句的区别
- 执行流程:
if
语句在条件为真时执行紧随其后的语句块,并立即退出if
结构。而switch
语句在找到匹配的case
后,会执行该case
及其后所有case
(直到遇到break
语句或switch
语句结束)的语句,除非使用了break
来阻止进一步执行。 - 条件判断:
if
语句允许更复杂的条件表达式,而switch
语句的“表达式”通常与case
中的常量表达式进行等值比较。
注意事项
- 唯一性:
case
后的常量表达式必须唯一,否则会导致编译错误。 - 语句块:
case
后的语句块不需要用大括号{}
括起来,但如果想在同一case
下执行多条语句,则应该使用{}
来明确语句块的范围。 - 穿透性:
switch
语句具有“穿透性”,即如果没有break
语句,程序将继续执行下一个case
中的语句。因此,通常需要在每个case
的末尾添加break
语句来避免意外执行。 - 顺序性:
case
和default
子句的顺序可以变动,但通常将default
放在最后以处理所有未明确指定的情况。 default
子句:default
子句是可选的,用于处理没有任何case
匹配的情况。如果省略了default
,且没有case
匹配,那么switch
语句将不执行任何操作。