C语言中的switch语句

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的值为: 20i的确切值为: 10j的确切值为: 20

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

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

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言switch语句允许测试一个变量等于多个值时的情况。switch语句的语法如下: ```c switch (expression) { case constant-expression1: statement(s); break; case constant-expression2: statement(s); break; // 可以有任意数量的case语句 default: statement(s); } ``` 在switch语句,expression是要被测试的变量,而constant-expression是每个case的值。当expression的值与某个case的值相等时,对应的语句会被执行。如果没有匹配的case,会执行default语句语句。 以下是一个使用switch语句的例子: ```c #include <stdio.h> int main() { char grade = 'B'; switch (grade) { case 'A': printf("很棒!\n"); break; case 'B': case 'C': printf("做得好!\n"); break; case 'D': printf("您通过了!\n"); break; case 'F': printf("最好再试一下!\n"); break; default: printf("无效的成绩!\n"); } printf("您的成绩是 %c!\n", grade); return 0; } ``` 在这个例子,根据变量grade的值,switch语句会执行相应的case语句。如果grade是'B'或'C',则会输出"做得好!"。如果grade是'A',则会输出"很棒!"。如果没有匹配的case,会执行default语句语句。最后,会输出"您的成绩是 B!"。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C语言/C++【switch语句详解(用法、规则、流程图、实例)】](https://blog.csdn.net/weixin_44949135/article/details/115174682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值