C语言switch括号中的参数类型
在 C 语言中,switch 语句是一种强大的控制流结构,用于根据某个表达式的值执行不同的代码块。但是,switch 语句的括号中的参数(也称为控制表达式)具有特定的要求和限制。
switch 语句的基本语法如下:
switch (expression) {
case constant1:
// 代码块 1
break;
case constant2:
// 代码块 2
break;
// 更多 case 语句
default:
// 默认代码块
}
switch 语句括号中的表达式(expression)必须是整数类型或者可以隐式转换为整数类型的值。具体来说,以下类型可以用作 switch 语句的控制表达式:
- 整数类型:包括 char、short、int 和 long,这些类型可以直接用作 switch 表达式,因为它们本身就是整数类型。
- 枚举类型:枚举在C语言中本质上是整数常量,因此也可以用作 switch 表达式。
- 字符类型:char 类型在C语言中实际上是一个小整数,表示字符的 ASCII 值,所以也可以用作 switch 表达式。
接下来,让我们通过一些示例来更好地理解这些类型的使用。
1) 使用整数类型作为 switch 表达式:
#include <stdio.h>
int main() {
int choice = 2;
switch (choice) {
case 1:
printf("You chose option 1\n");
break;
case 2:
printf("You chose option 2\n");
break;
case 3:
printf("You chose option 3\n");
break;
default:
printf("Invalid choice\n");
}
return 0;
}
运行这段代码,输出结果为:
You chose option 2
2) 使用枚举类型作为 switch 表达式:
#include <stdio.h>
enum Days {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};
int main() {
enum Days today = WEDNESDAY;
switch (today) {
case MONDAY:
printf("It's Monday. Time to start the work week.\n");
break;
case WEDNESDAY:
printf("It's Wednesday. Halfway through the week!\n");
break;
case FRIDAY:
printf("It's Friday. Weekend is near!\n");
break;
default:
printf("It's another day of the week.\n");
}
return 0;
}
运行这段代码,输出结果为:
It's Wednesday. Halfway through the week!
3) 使用字符类型作为 switch 表达式:
#include <stdio.h>
int main() {
char grade = 'B';
switch (grade) {
case 'A':
printf("Excellent!\n");
break;
case 'B':
printf("Good job!\n");
break;
case 'C':
printf("You passed.\n");
break;
case 'D':
case 'F':
printf("You need to improve.\n");
break;
default:
printf("Invalid grade.\n");
}
return 0;
}
运行这段代码,输出结果为:
Good job!
需要注意的是,switch 语句不支持浮点类型(如 float 或 double)作为控制表达式,这是因为浮点数的比较可能会因为精度问题而产生意外结果。如果你需要根据浮点值进行分支,应该使用 if else 语句结构。
此外,switch 语句的 case 标签必须是常量表达式,不能是变量或函数调用,这是因为编译器需要在编译时确定所有可能的分支。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。