switch…case用法详解

switch…case用法详解

switch...case用法详解

在编程中,我们经常会遇到根据不同的条件来执行不同的操作的场景。如果仅仅使用if…else语句来判断条件,可能会导致代码冗长、不易维护。这时,我们可以使用switch…case语句来简化代码,使其更加清晰、易读。本文将详细介绍switch…case的用法,帮助读者更好地理解和掌握这个语法。

1. switch…case基本语法

switch…case语句是一种多分支选择结构,根据给定的表达式的值,选择匹配的case分支执行。它的基本语法如下:

switch (expression) {
    case value1:
        // 执行一些操作
        break;
    case value2:
        // 执行一些操作
        break;
    // ...
    default:
        // 当以上所有case都不匹配时执行的操作
}

其中,expression是一个变量或表达式,用于进行比较的值;value1、value2等是要与expression进行匹配的值;break语句用于跳出switch语句;default是可选的,用于处理没有与任何case匹配的情况。

2. switch…case的执行流程

当代码执行到switch…case语句时,首先会计算expression的值。然后它与各个case的值进行比较,寻找匹配的case分支。如果找到匹配的case分支,就执行该case分支下的操作,并且在执行完后跳出switch语句。如果没有找到匹配的case分支,则执行default下的操作(如果有),然后跳出switch语句。

3. switch…case的注意事项

在使用switch…case时,我们需要注意以下几点:

  • 在case分支中的值必须是常量表达式,不能是变量。
  • case分支中的值必须是唯一的,不能有重复的值。
  • 一个case分支中的代码执行完成后,必须使用break语句跳出switch,否则会继续执行下一个case分支,直到遇到break语句。
  • default分支是可选的,当没有与任何case匹配时,会执行default分支。如果没有default分支,switch语句就直接跳出。

以下是一个简单的示例,演示了switch…case的基本用法:

#include <stdio.h>

int main() {
    int num = 2;

    switch (num) {
        case 1:
            printf("数字为1\n");
            break;
        case 2:
            printf("数字为2\n");
            break;
        case 3:
            printf("数字为3\n");
            break;
        default:
            printf("数字不在1-3范围内\n");
    }

    return 0;
}

输出结果为:

数字为2

4. switch…case的进阶用法

  • case连续使用

在一些特定场景下,我们可能希望多个case分支执行相同的操作。为了避免重复的代码,我们可以在连续的case分支中省略break语句。这样,在找到匹配的case后,会一直执行到遇到第一个break语句为止。

#include <stdio.h>

int main() {
    int grade = 80;

    switch (grade) {
        case 90 ... 100:
            printf("优秀\n");
            break;
        case 80 ... 89:
            printf("良好\n");
            break;
        case 70 ... 79:
            printf("中等\n");
            break;
        case 60 ... 69:
            printf("及格\n");
            break;
        default:
            printf("不及格\n");
    }

    return 0;
}

输出结果为:

良好
  • case中使用表达式

在一些情况下,我们可能需要在case分支中使用表达式进行匹配操作。这时,我们可以使用常量表达式或变量表达式。

#include <stdio.h>

int main() {
    int num = 4;

    switch (num % 2) {
        case 0:
            printf("偶数\n");
            break;
        case 1:
            printf("奇数\n");
            break;
        default:
            printf("无法判断\n");
    }

    return 0;
}

输出结果为:

偶数
  • switch…case嵌套

在一些复杂的场景下,我们可能需要嵌套使用switch…case语句来实现多层次的选择判断。

#include <stdio.h>

int main() {
    int score = 85;
    int level;

    switch (score / 10) {
        case 10:
        case 9:
            switch (score % 10) {
                case 0 ... 3:
                    level = 0;
                    break;
                default:
                    level = 1;
            }
            break;
        case 8:
        case 7:
            level = 2;
            break;
        case 6:
            level = 3;
            break;
        default:
            level = 4;
    }

    switch (level) {
        case 0:
            printf("等级为A+\n");
            break;
        case 1:
            printf("等级为A\n");
            break;
        case 2:
            printf("等级为B\n");
            break;
        case 3:
            printf("等级为C\n");
            break;
        case 4:
            printf("等级为D\n");
            break;
    }

    return 0;
}

输出结果为:

等级为A

5. 总结

在本文中,我们详细介绍了switch…case语句的基本语法和执行流程,并通过示例代码演示了其用法。通过使用switch…case语句,我们可以简化代码,提高代码的可读性和可维护性。同时,我们还介绍了一些进阶用法,如连续使用case、使用表达式进行匹配以及嵌套使用switch…case语句。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程