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

C语言switch语句中default用法(附带实例)

在C语言中,switch 语句是一种强大的控制流结构,用于根据表达式的值执行不同的代码块。而 default 子句则是 switch 语句中的一个特殊部分,它为我们提供了处理所有未明确匹配的情况的机会。


switch 语句的基本结构如下:

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

default 子句在 switch 语句中扮演着“兜底”的角色,当 switch 表达式的值与所有的 case 常量都不匹配时,程序将执行 default 子句中的代码,这使得 default 成为处理意外或未预料情况的理想选择。


让我们通过一个简单的例子来说明 default 的作用:

#include <stdio.h>

int main() {
    int day = 8;
    
    switch (day) {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        case 6:
            printf("星期六\n");
            break;
        case 7:
            printf("星期日\n");
            break;
        default:
            printf("无效的日期\n");
    }
    
    return 0;
}

在这个例子中,如果 day 的值是 1 到 7 之间的任何数字,程序将打印对应的星期几。但是,如果 day 的值不在这个范围内(比如我们设置的 8),default 子句就会被执行,打印出“无效的日期”。


运行这段代码,我们会得到以下输出:

无效的日期

default 子句的位置在 switch 语句中是灵活的。虽然通常将它放在所有 case 语句之后,但实际上它可以放在 switch 语句的任何位置。无论它的位置如何,只有在所有 case 都不匹配时才会执行 default 子句。


值得注意的是,default 子句是可选的。如果我们省略了 default 子句,且 switch 表达式的值与所有的 case 常量都不匹配,那么程序将简单地跳过整个 switch 语句,继续执行 switch 语句之后的代码。


default 子句的另一个重要用途是在处理枚举类型时捕获未知值。例如:

#include <stdio.h>

enum Color { RED, GREEN, BLUE };

int main() {
    enum Color c = 5;  // 非法值
    
    switch (c) {
        case RED:
            printf("红色\n");
            break;
        case GREEN:
            printf("绿色\n");
            break;
        case BLUE:
            printf("蓝色\n");
            break;
        default:
            printf("未知颜色\n");
    }
    
    return 0;
}

在这个例子中,我们为 c 赋予了一个非法值 5。由于这个值不匹配任何 case,default 子句将被执行,输出“未知颜色”。这种做法可以帮助我们捕获和处理意外的枚举值,提高程序的健壮性。


使用 default 子句时,我们通常不需要在其后添加 break 语句,因为它已经是 switch 语句的最后一个部分。然而,如果出于某种原因你将 default 子句放在其他 case 之前,那么添加 break 就变得必要了,以防止执行继续进入下一个 case。


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