📜  关于C中switch语句的有趣事实(1)

📅  最后修改于: 2023-12-03 14:50:05.167000             🧑  作者: Mango

关于C中switch语句的有趣事实

在C语言中,switch语句是一种非常常用的控制流语句,可以根据一个表达式的值,跳转到匹配的case语句执行。但是,你可能对以下有趣的事实并不了解:

1. case语句中声明变量

在case语句中,你可以声明一个变量,并且只在当前case语句块中生效。例如:

switch (num) {
    case 1:
        int res = 2 * num;
        printf("%d\n", res);
        break;
    case 2:
        printf("%d\n", num * 3);
        break;
    default:
        printf("Unknown number\n");
        break;
}

在上面的例子中,我们在case 1中声明了一个变量res,并且只在当前的case语句块中可用。这个技巧可以让我们在每个case语句块中使用不同的变量。

2. 多case语句中的隐式关系

在一些情况下,我们可以把多个case语句归为一类,这时可以使用逗号隔开的多个case,例如:

switch (num) {
    case 1:
    case 2:
    case 3:
        printf("num is between 1 and 3\n");
        break;
    case 4:
        printf("num is 4\n");
        break;
    default:
        printf("Unknown number\n");
        break;
}

在上面的例子中,我们把1, 2, 3三个case归为同一类,并在该类的最后使用break语句。这个技巧在一些情况下可以让我们写出更简单、更清晰的代码。

3. switch语句中的表达式可以是任何类型

在C语言中,switch语句中的表达式可以是任何类型,包括整数、字符、指针、枚举等等。由于C语言中的任何类型都可以被整数类型表示,因此我们可以用任何类型的值来控制switch语句的流程。例如:

char c;
scanf("%c", &c);
switch (c) {
    case 'a':
    case 'A':
        printf("You pressed 'a'\n");
        break;
    case 'b':
    case 'B':
        printf("You pressed 'b'\n");
        break;
    default:
        printf("Unknown character\n");
        break;
}

在上面的例子中,我们把char类型的变量作为switch语句的表达式,并且支持大小写字母的匹配。

总结

以上就是关于C中switch语句的一些有趣的事实。虽然这些技巧可能不是很实用,但是你可以在编写复杂的C程序时使用它们,让你的程序更加简洁、清晰。