首页 > 编程笔记 > C语言笔记

C语言switch()括号中能放什么类型?

C语言中的 switch 语句是一种强大的控制流结构,用于根据表达式的值执行不同的代码块。
 

switch 语句的基本语法如下:

switch (expression) {
    case constant1:
        // 代码块 1
        break;
    case constant2:
        // 代码块 2
        break;
    // 更多 case 语句...
    default:
        // 默认代码块
}

在这个结构中,expression 是 switch 语句的核心;然而,C语言对这个表达式的类型有一些限制。接下来,让我们详细了解一下 switch 语句支持的数据类型。

1. 整数类型

switch 语句最常用于整数类型。这包括:


这里有一个使用 int 类型的例子:

#include <stdio.h>

int main() {
    int day = 3;
    switch (day) {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        default:
            printf("其他日子\n");
    }
    return 0;
}

运行这段代码,输出结果为:

星期三

2. 枚举类型

枚举类型本质上是整数常量,因此也可以在 switch 语句中使用,例如:

#include <stdio.h>

enum Colors { RED, GREEN, BLUE };

int main() {
    enum Colors color = GREEN;
    switch (color) {
        case RED:
            printf("选择了红色\n");
            break;
        case GREEN:
            printf("选择了绿色\n");
            break;
        case BLUE:
            printf("选择了蓝色\n");
            break;
    }
    return 0;
}

这段代码的输出是:

选择了绿色

3. 字符类型

字符类型(char)在C语言中实际上是一种小整数,因此也可以在 switch 语句中使用,例如:

#include <stdio.h>

int main() {
    char grade = 'B';
    switch (grade) {
        case 'A':
            printf("优秀!\n");
            break;
        case 'B':
            printf("良好!\n");
            break;
        case 'C':
            printf("及格\n");
            break;
        default:
            printf("需要努力\n");
    }
    return 0;
}

运行结果:

良好!

不支持的类型

值得注意的是,switch 语句不支持以下类型:


如果尝试在 switch 语句中使用这些类型,编译器会报错。例如,以下代码是不合法的:

float score = 85.5;
switch (score) {  // 编译错误
    case 90.0:
        printf("优秀\n");
        break;
    // ...
}

在实际编程中,我们经常需要根据不同的条件执行不同的代码块。switch 语句提供了一种清晰、高效的方式来处理多重条件分支,特别是当这些条件基于整数或枚举值时。
 

记住,虽然 switch 语句在某些情况下可以替代 if else 结构,但它们各有优势:switch 语句在处理多个离散值时特别有用,而 if else 结构则更适合处理范围或复杂条件。选择使用哪种结构应该基于具体的编程需求和代码的可读性考虑。


声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。