c语言default什么意思

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 C语言 正文

defaultswitch 语句的一部分,它的作用是提供一个“默认”或“其他所有情况”的执行分支。

c语言default什么意思
(图片来源网络,侵删)

核心概念:default 的作用

在一个 switch 语句中,程序会计算一个表达式的值,然后与 case 标签后面的值进行匹配,如果找到了匹配的 case,程序就执行该 case 后面的代码。

如果表达式的值没有匹配任何一个 case 标签,那么程序该怎么办呢?这时,default 就派上用场了。

default 块包含了在所有 case 都不匹配时需要执行的代码,你可以把它理解为 switch 语句的“最后防线”或“其他情况处理”。

语法结构

default 必须和 switch 语句一起使用,其基本语法如下:

c语言default什么意思
(图片来源网络,侵删)
switch (expression) {
    case constant1:
        // 当 expression 的值等于 constant1 时,执行这里的代码
        break;
    case constant2:
        // 当 expression 的值等于 constant2 时,执行这里的代码
        break;
    // ... 可以有更多的 case ...
    default:
        // 当 expression 的值不等于任何一个 case 时,执行这里的代码
        break; // 虽然 default 是最后一个,但加上 break 是个好习惯
}

关键点:

  • default 是一个可选的(optional)部分,switch 语句可以没有 default
  • default 块的位置是灵活的,可以放在 switch 语句的任何地方,但通常为了代码清晰,会放在所有 case 的最后。
  • default 被执行时,程序会跳转到 default: 标签,然后顺序执行其后的代码,直到遇到 break 语句或者 switch 语句的结束大括号 。

工作流程图

         +-----------------+
         |   计算 expression |
         +--------+--------+
                  |
         +--------+--------+
         |  开始匹配 case  |
         +--------+--------+
                  |
         +--------+--------+
         |   case 1 匹配?  |---- 是 ---> 执行 case 1 的代码 ---> break; (退出switch)
         +--------+--------+
                  | 否
         +--------+--------+
         |   case 2 匹配?  |---- 是 ---> 执行 case 2 的代码 ---> break; (退出switch)
         +--------+--------+
                  | 否
         +--------+--------+
         |   ... (更多case) |
         +--------+--------+
                  | 否
         +--------+--------+
         |   有 default?   |
         +--------+--------+
                  | 有
         +--------+--------+
         |  执行 default 的代码 |
         +--------+--------+
                  | 没有
         +--------+--------+
         |   结束 switch    |
         +-----------------+

代码示例

让我们通过几个例子来理解 default 的用法。

示例 1:处理无效输入

这是一个非常经典的场景,根据用户输入的数字给出不同的反馈,如果输入的不是预期的数字,则提示错误。

#include <stdio.h>
int main() {
    int choice;
    printf("请选择一个选项 (1, 2, 或 3): ");
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            printf("你选择了选项 1,\n");
            break;
        case 2:
            printf("你选择了选项 2,\n");
            break;
        case 3:
            printf("你选择了选项 3,\n");
            break;
        default:
            printf("错误:无效的选项!请输入 1, 2 或 3,\n");
            break; // 这里 break 不是必须的,因为 default 是最后一个,但加上是好习惯
    }
    return 0;
}

执行情况分析:

c语言default什么意思
(图片来源网络,侵删)
  • 如果用户输入 1,输出 你选择了选项 1。
  • 如果用户输入 2,输出 你选择了选项 2。
  • 如果用户输入 3,输出 你选择了选项 3。
  • 如果用户输入 40 或任何其他数字,由于没有 case 与之匹配,程序会直接执行 default 块,输出 错误:无效的选项!

示例 2:default 不在最后面

default 可以放在任何位置,但会影响代码的可读性。

#include <stdio.h>
int main() {
    int number = 5;
    switch (number) {
        default:
            printf("数字既不是 10 也不是 20,\n");
            break;
        case 10:
            printf("数字是 10,\n");
            break;
        case 20:
            printf("数字是 20,\n");
            break;
    }
    return 0;
}

在这个例子中,number 的值是 5,它不等于 10 也不等于 20,所以程序会直接跳到 default 块执行,输出 数字既不是 10 也不是 20。,这与 default 的位置无关。

示例 3:没有 break 语句(贯穿 - Fallthrough)

switch 语句中,如果某个 case 的最后没有 break 语句,程序会“贯穿”到下一个 case 继续执行。default 也可以发生贯穿。

#include <stdio.h>
int main() {
    char grade = 'B';
    switch (grade) {
        case 'A':
            printf("优秀!\n");
            break;
        case 'B':
            printf("良好,\n");
            // 没有 break,会继续执行下面的 case 'C'
        case 'C':
            printf("及格,\n");
            break;
        default:
            printf("需要努力,\n");
            break;
    }
    return 0;
}

执行情况分析:

  • grade'B',程序匹配到 case 'B'
  • 打印 良好。
  • 因为 case 'B' 后面没有 break,程序继续向下执行 case 'C' 的代码。
  • 打印 及格。
  • case 'C' 后面有 breakswitch 语句结束。

最终输出:

良好。
及格。

特性 描述
用途 switch 语句中,作为所有 case 都不匹配时的默认执行分支。
位置 可以放在 switch 语句内的任何位置,但通常放在最后。
可选性 defaultswitch 语句的可选部分。
break default 块内的代码执行完毕后,通常需要一个 break 来退出 switch 语句,除非它位于最后或者有意让它发生“贯穿”。
重要性 default 对于处理意外输入、错误情况和边界条件至关重要,能让程序更加健壮和用户友好。
-- 展开阅读全文 --
头像
dede5.7栏目图标怎么添加或修改?
« 上一篇 今天
printf在C语言中具体怎么用?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]