提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
在实际生活中,我们常常要面对多种多样的选择,如果要用编程来解决这些问题,我们就可以用选择语句来解决问题。
通常我们遇到这类问题都可能习惯去使用if语句来解决,但是如果选择太多使用if语句就会相当繁琐。而在这个时候,我们就需要一个能够将代码简化的语句,那就是 ---- switch语句
一、switch语句及其相关概念详解
1.C语言中的switch语句
在C语言中,switch语句是一种多分支选择结构,它允许根据表达式的值来执行不同的代码块。switch语句的基本语法如下:
switch (表达式) {
case 常量1:
语句1;
break;
case 常量2:
语句2;
break;
// 可以有多个case分支
default:
语句n;
//当表达式结果都不与case匹配时执行default语句
}
在switch语句中,表达式通常是一个变量或常量,而case后的常量是一系列可能的值,程序会根据表达式的值选择执行与之匹配的case块中的代码。如果表达式的值与任何case后的常量表达式相匹配,程序就会执行那一行代码之后的所有代码,直到遇到break语句为止。break语句用于退出switch语句,避免执行后续的case块中的代码。default分支是可选的,它会在没有任何case与表达式匹配时执行。
2.使用switch语句注意事项
①switch语句中的表达式必须是整数类型或可以隐式转换为整数类型的表达式。
②case标签中的常量值必须是唯一的,不能有重复的值。
③default标签是可选的,如果存在,它必须位于switch语句的末尾,但不强制要求一定要有default分支。
④case标签中只能使用常量值,不能使用变量或表达式。
⑤case标签的顺序不影响程序的执行,程序会按case标签出现的顺序进行匹配.
switch语句在处理具有多个离散值的变量时非常有用,它可以提高代码的可读性和效率,尤其是在处理菜单选项、状态机或者任何需要根据单一变量的值执行多种操作的场合。
3.case在switch语句中的基本概念
在C语言的switch语句里,case是一个关键的组成部分。它用于定义一个可能与switch表达式相匹配的值。
①语法形式
基本语法为case 常量表达式:,这个常量表达式在编译时就能够确定其值。例如,case 1:、case 'a':等都是合法的case表达式。
②匹配机制
当switch语句中的表达式的值与某个case后的常量表达式的值相等时,程序就会从这个case后面的语句开始执行,直到遇到break语句或者switch语句结束。如果num的值为1,那么就会执行case 1后面的printf语句,然后遇到break就跳出switch语句。
4.case的注意事项
①常量要求
case后面必须跟常量表达式,不能是变量或者包含变量的表达式。例如,int x = 1; case x:是非法的。
②值的唯一性
在同一个switch语句中,各个case后面的常量表达式的值必须是不同的。如果出现相同的值,会导致编译错误或者逻辑混乱。
③执行顺序
虽然case的排列顺序不影响switch语句的匹配功能,但按照逻辑顺序排列case可以提高代码的可读性。例如,按照数值从小到大或者按照某种逻辑顺序排列case常量表达式的值。
④无默认执行顺序
在没有break语句的情况下,一旦某个case被匹配,程序会顺序执行后面的case语句,而不会自动跳转到下一个不同的case。这一点在编写switch语句时需要特别注意,以避免出现意外的执行结果。
5.break在switch语句中的基本概念
在C语言中,break语句用于立即终止当前正在执行的循环或switch语句,并使程序流向其后的第一条语句。break的主要作用包括:
①跳出循环:在for、while或do-while循环中,当break被执行时,循环会立即停止,程序不会执行循环体内的剩余语句,也不会进入下一次迭代。
②跳出switch语句:在switch语句中,每个case标签后面通常都会跟随一个break语句。当执行到break时,程序会跳出switch语句,不会继续执行后续case中的代码。
6.break语句的典型使用示例
以下是break语句在循环和switch语句中的使用示例:
①循环中的break
//循环中的break
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 当 i 等于 5 时跳出循环
}
printf("%d ", i);
}
return 0;
}
在这个例子中,当i达到5时,break语句会执行,循环终止,输出结果为0 1 2 3 4。
②switch语句中的break
//switch语句中的break
#include <stdio.h>
int main() {
int choice = 3;
switch (choice) {
case 1:
printf("Option 1 selected\n");
break;
case 2:
printf("Option 2 selected\n");
break;
case 3:
printf("Option 3 selected\n");
// 如果这里没有break,程序将继续执行case 4中的代码
break;
case 4:
printf("Option 4 selected\n");
break;
default:
printf("No valid options\n");
}
return 0;
}
在这个switch语句的例子中,每个case标签后面都有一个break,以防止程序继续执行后续case中的代码。如果缺少了break,程序将不会在匹配到一个case后立即跳出switch语句,而是会继续执行直到遇到下一个break或switch语句结束。
③break语句的最佳实践
1.避免滥用:过度使用break可能会使代码结构复杂化,难以阅读和维护。
2.检查位置:确保break语句放置在正确的位置,以避免意外的逻辑错误或无限循环。
3.结合条件使用:在循环中,break通常与条件语句结合使用,以基于特定条件提前退出循环。
通过合理使用break语句,可以提高C语言程序的效率和可读性.
7.default在switch语句中的基本概念
在C语言中,default关键字用于switch语句中,作为一个备选的分支。它的作用是在switch语句中,当所有的case标签都不与控制表达式的值相匹配时,执行default标签后面的代码块。这意味着default是一个“兜底”选项,保证了即使没有任何case条件被满足,程序也有相应的执行路径。
①使用规则
1.default标签不是必须的,它的存在与否取决于程序员是否需要在所有case条件都不匹配时执行某些代码。
2.default标签可以在任何位置出现在switch语句中,不仅仅是在最后。如果default不在最后,即使执行了default后面的代码,程序仍然会继续执行紧随其后的case标签中的代码,除非遇到了break语句。
3.如果default后面跟着其他的case标签,那么在执行default代码块后,程序会继续执行这些case标签中的代码,除非遇到了break语句。这是因为switch语句会一直执行直到遇到break语句为止,而default本身并不具有中断执行流程的作用。
4.通常建议将default标签放在switch语句的最后,以增加代码的清晰性和可维护性。
8.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;
case 3:
printf("Number is 3\n");
break;
default:
printf("Number is not between 1 and 3\n");
// 此处不加break,如果default后面有case标签,程序将继续执行
}
return 0;
}
在这个示例中,如果num的值为5,则会执行default标签后的代码,因为没有任何case的值与5匹配。如果default后面没有紧跟其他case标签,则执行完毕后会退出switch语句。如果有其他case标签,则需要额外的break语句来确保流程的正确终止。
二、switch语句灵活运用及代码分析
#include <stdio.h>
int main() {
int x = 3;
int y = 3;
switch (x % 2) { // x%2的结果为1,因此执行case1
case 1:
switch (y) // y是3,因此会执行case3,而case3不存在,那只能执行default
{
case 0:
printf("first");
case 1:
printf("second");
break;
default: printf("hello"); // 打印hello,打印完之后,内部switch结束,此时外部case1结束
} // 因为外部case1之后没有添加break语句,所以继续执行case2
case 2: // 打印third
printf("third"); // 外部switch结束
}
return 0;
}
最后输出"hellothird",switch语句时多分支的选择语句,switch中表达式结果命中那个case,就执行该case子项,如果case子项后没有跟break语句,则继续往下执行。
标签:语句,case,default,break,switch,详解,表达式 From: https://blog.csdn.net/qq_74215677/article/details/143317116