C语言中的switch语句是if-else-if梯度语句的一种替代方式,它允许我们根据一个称为switch变量的单个变量的不同可能值执行多个操作。在这里,我们可以为单个变量的不同值定义多个case中的语句。

C语言中switch语句的语法如下:

switch(expression){
case value1:
//要执行的代码;
break; //可选的
case value2:
//要执行的代码;
break; //可选的
......

default:
 //如果所有的case都不匹配,则执行的代码;
}

C语言中switch语句的规则

  1. switch表达式必须是整数或字符类型。
  2. case值必须是整数或字符常量。
  3. case值只能在switch语句内部使用。
  4. switch case中的break语句是可选的。如果在case中没有找到break语句,匹配的case之后的所有case都会被执行。这被称为C语言switch语句的"穿透"状态。

让我们通过示例来理解。假设有以下变量:

int x, y, z;
char a, b;
float f;

【图片】

switch case语句的工作原理

首先,计算switch语句中指定的整数表达式的值。然后,逐个将该值与不同case中给定的常量值进行匹配。如果找到匹配的情况,那么将执行该case中指定的所有语句,以及该case之后的所有case,包括default语句。两个case不能具有相同的值。如果匹配的case包含break语句,则会跳过之后的所有case,并且控制流会退出switch语句。否则,将执行匹配的case之后的所有case。

让我们看一个C语言switch语句的简单示例。

#include<stdio.h>

int main() {
    int number = 0;
    printf("请输入一个数字: ");
    scanf("%d", &number);
    switch(number) {
        case 10:
            printf("数字等于10");
            break;
        case 50:
            printf("数字等于50");
            break;
        case 100:
            printf("数字等于100");
            break;
        default:
            printf("数字不等于10、50或100");
    }
    return 0;
}

输出:

请输入一个数字: 4
数字不等于10、50或100
请输入一个数字: 50
数字等于50
#include <stdio.h>

int main() {
    int x = 10, y = 5;
    switch (x > y && x + y > 0) {
        case 1:
            printf("hi");
            break;
        case 0:
            printf("bye");
            break;
        default:
            printf("Hello bye");
    }
    
    return 0;
}

输出:

hi

C语言中的switch语句具有"穿透"特性

这意味着如果在switch case中没有使用break语句,那么匹配的case之后的所有case都将被执行。

#include<stdio.h>

int main() {
    int number = 0;
  
    printf("请输入一个数字:");
    scanf("%d", &number);
  
    switch(number) {
        case 10:
            printf("数字等于10\n");
        case 50:
            printf("数字等于50\n");
        case 100:
            printf("数字等于100\n");
        default:
            printf("数字不等于10、50或100");
    }
  
    return 0;
}

输出:

请输入一个数字:10
数字等于10
数字等于50
数字等于100
数字不等于10、50或100

输出:

请输入一个数字:50
数字等于50
数字等于100
数字不等于10、50或100

嵌套的 switch case 语句

我们可以在 switch 语句中使用任意多的 switch 语句。 这种类型的语句称为嵌套 switch case 语句。 考虑以下示例。

#include <stdio.h>

int main() {
    int i = 10;
    int j = 20;

    switch (i) {
        case 10:
            printf("外部switch中i的值为: %d\n", i);
        case 20:
            switch (j) {
                case 20:
                    printf("嵌套switch中j的值为: %d\n", j);
            }
    }

    printf("i的确切值为: %d\n", i);
    printf("j的确切值为: %d\n", j);

    return 0;
}

输出:

外部switch中i的值为: 10
嵌套switch中j的值为: 20
i的确切值为: 10
j的确切值为: 20

在这个例子中,我们使用了嵌套的switch case语句。外部的switch语句根据变量i的值进行匹配,如果匹配到指定的case,就会执行相应的语句。在其中一个case中,我们有另一个switch语句,用来匹配变量j的值。如果匹配到指定的case,就会执行相应的语句。

最后,在嵌套的switch case之后,程序会继续执行嵌套外部switch之外的代码。

标签: c语言, c语言教程, c语言技术, c语言学习, c语言学习教程, c语言下载, c语言开发, c语言入门教程, c语言进阶教程, c语言高级教程, c语言面试题, c语言笔试题, c语言编程思想