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笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。