1、switch语句定义
switch
语句是C语言中另一种常用的选择语句,它根据表达式的值选择执行不同的代码块。switch
语句的原理是将表达式的值与每个case
标签进行比较,如果匹配成功,则执行相应的代码块。
break
语句是在控制流中使用的关键字,用于终止当前的循环或switch
语句,并跳出循环或switch
语句的代码块。当break
语句执行时,程序将会跳出当前的循环或switch
语句,并继续执行下一个语句或代码块。
基本的switch
语句的语法如下:
switch (表达式) {
case 值1:
// 如果表达式的值与值1匹配,执行这里的代码块
break;
case 值2:
// 如果表达式的值与值2匹配,执行这里的代码块
break;
// 其他case标签...
default:
// 如果表达式的值与前面的所有值都不匹配,执行这里的代码块
break;
}
switch
语句首先计算表达式的值,然后将其与每个case
标签的值进行比较,如果找到匹配的值,就执行对应的代码块。如果没有匹配的值,可以使用default
标签指定一个默认的代码块。
2、switch实例
以下是一个使用switch
语句的示例:
#include <stdio.h>
int main()
{
int day = 3;
switch (day) {
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;
default:
printf("Weekend\n");
break;
}
return 0;
}
运行结果:
在这个示例中,我们使用switch
语句根据day
的值选择输出相应的星期几。由于day
的值为3,与case 3
匹配,所以输出"Wednesday"。
需要注意的是,每个case
标签后面的代码块都需要使用break
语句来结束,以避免执行其他不必要的代码块。如果没有使用break
语句,switch
语句将会继续执行后面的代码块,直到遇到break
语句或switch
语句结束。
switch
语句的表达式可以是整数类型或字符类型,但不支持浮点数类型和字符串类型。每个case
标签的值必须是常量表达式,不能是变量。
3、注意事项
当使用switch
语句时,有几个需要注意的方面:
case
标签的值必须是常量表达式:switch
语句的case
标签的值必须是常量表达式,不能是变量。这是因为switch
语句使用的是基于值的比较,而不是基于条件的比较。如果需要进行基于条件的比较,应该使用if-else
语句。
以下是一个示例:
int x = 2;
int y = 3;
switch (x + y) {
case 5: // 正确,5是常量表达式
printf("Sum is 5.\n");
break;
case x + y: // 错误,x + y是变量表达式
printf("Sum is equal to x + y.\n");
break;
}
在这个示例中,第一个case
标签的值是常量表达式5,因此是有效的。而第二个case
标签的值是变量表达式x + y
,这是无效的。
每个
case
后面需要使用break
语句:在switch
语句的每个case
代码块中,都需要使用break
语句来结束该代码块。如果没有使用break
语句,程序将会继续执行下一个case
代码块,直到遇到break
语句或switch
语句结束。如果忘记使用break
语句,可能会导致意外的代码执行。
以下是一个示例:
#include <stdio.h>
int main()
{
int day = 3;
switch (day) {
case 1:
printf("Monday\n");
break;
case 2:
printf("Tuesday\n");
break;
case 3:
printf("Wednesday\n");
// 没有使用break语句,将继续执行下一个case代码块
case 4:
printf("Thursday\n");
break;
}
return 0;
}
运行结果:
在这个示例中,当day
的值为3时,首先执行case 3
的代码块,然后继续执行case 4
的代码块。如果我们希望每个case
之间相互独立,应该在每个case
的代码块末尾使用break
语句。
可以使用
default
标签指定默认的代码块:switch
语句可以使用default
标签来指定一个默认的代码块。当表达式的值与所有的case
标签都不匹配时,将执行default
标签后面的代码块。default
标签是可选的,可以根据需要决定是否使用。
以下是一个示例:
#include <stdio.h>
int main()
{
int num = 5;
switch (num) {
case 1:
printf("Number is 1.\n");
break;
case 2:
printf("Number is 2.\n");
break;
default:
printf("Number is not 1 or 2.\n");
break;
}
return 0;
}
运行结果:
在这个示例中,如果num
的值既不是1也不是2,将执行default
标签后面的代码块。
这些是使用switch
语句时需要注意的一些方面。合理地使用break
语句、考虑边界条件和使用default
标签,可以确保switch
语句的正确执行。