介绍
switch
是C语言中的一种控制流语句,它允许根据表达式的值来执行不同的代码块。
switch
语句通常用于替代一系列嵌套的if-else语句,使代码更加清晰和易于理解。
语法
switch
语句的语法如下:
cpp
switch (expression) {
case constant-expression:
statement(s);
break;
case constant-expression:
statement(s);
break;
/* 可以有任意数量的 case 语句 */
default:
statement(s);
}
switch
语句中的expression
必须是一个整型或枚举类型的常量表达式。每个case
后面跟着一个要比较的值和一个冒号。
如果expression
的值与某个case
后面的常量表达式的值相等,就执行该case
后面的语句,直到遇到break
语句为止。
如果没有任何一个case
的常量表达式的值与expression
的值相等,就执行default
后面的语句。default
是"默认"的意思,可以省略。
合并case技巧
在switch
语句中,可以将多个case的语句合并到一起,例如:
正确合并
cpp
switch (grade) {
case 'A':
case 'B':
case 'C':
printf("Pass\n");
break;
case 'D':
case 'F':
printf("Fail\n");
break;
default:
printf("Invalid grade\n");
}
错误合并
cpp
switch (grade) {
case 'A' || 'B' || 'C':
printf("Pass\n");
break;
case 'D' || 'F':
printf("Fail\n");
break;
default:
printf("Invalid grade\n");
}
在这个例子中,如果grade
的值为'A'、'B'或'C',则输出"Pass";
如果值为'D'或'F',则输出"Fail";否则输出"Invalid grade"。
通过将多个case
的语句合并到一起,可以减少代码的重复,使代码更加简洁。
需要注意的是,合并的case
语句必须具有相同的执行路径,否则可能会出现逻辑错误。