原文链接

https://github.com/shellhub/blog/issues/41

C语言switch史上最详细的讲解

switch语句允许测试变量与值列表的相等性,每个值称之为案例或者case,程序会检查switch后面的值并且与case后面的值比对,如果相等则执行后面的代码或代码块

语法

switch在C语言中的语法如下

switch(expression) {case constant-expression  :statement(s);break; /* optional */case constant-expression  :statement(s);break; /* optional *//* you can have any number of case statements */default : /* Optional */statement(s);
}
  • switch语句中使用的表达式必须具是intenum类型,否则如float等其他数据类型是无法通过的编译的,因为编译器需要switch后面的语句和case后面的值精确匹配,而计算机无法精确表达一个float数据类型
  • switch可以任意个case语句(包括没有), 值和语句之间使用:分隔
  • case后面的值必须是int常量值,或者返回结果为int类型的表达式,以下代码无法编译通过
switch (1) {case 1.1:break;
}
int a;
scanf("%d", &a);
switch (a) {case a + 1:break;
}
  • switch后面的变量值和case后面的常量值匹配相等后,case后面的代码将会被执行,直到break语句被执行后跳出switch代码块

  • break不是必须的,如果没有break,则执行完当前case的代码块后会继续执行后面case代码块的内容,直到执行break才可以退出

  • switch有一个默认的情况,我们用default关键词表示,当switch后面的变量和所有case后面的常量都不匹配的情况下,默认执行default后面的语句

Example 1

#include <stdio.h>int main () {/* local variable definition */char grade;scanf("%c", &grade);switch(grade) {case 'A' :printf("Excellent!\n" );break;case 'B' :case 'C' :printf("Well done\n" );break;case 'D' :printf("You passed\n" );break;case 'F' :printf("Better try again\n" );break;default :printf("Invalid grade\n" );}printf("Your grade is  %c\n", grade );return 0;
}

Example 2

#include <stdio.h>
int main() {printf("Please input your grade(1-100):");int grade;scanf("%d", &grade);switch (grade / 10) {case 10:case 9:printf("A\n");break;case 8:case 7:printf("B\n");break;case 6:case 5:printf("C\n");break;default:break;}return 0;
}

C语言switch史上最详细的讲解相关推荐

  1. c语言事件结构体,C语言结构体史上最详细的讲解

    struct结构体数据类型 前言 我们知道,在C语言中有一些基本的数据类型,如char int float long double string(c99) 等等数据类型,他们可以表示一些事物的基本属性 ...

  2. 史上最详细的讲解,第一次如何上传本地代码到github

    虽然做开发了一年多,但是每次使用git上传代码都是从公司私服上下载下来的代码,里面已经有了git的上传信息,上传时直接在idea里上传,但是没有研究过第一次是如何上传的.最近自己想开发一个网站,我做全 ...

  3. 自学软件测试怎么学?【史上最详细学习路线】(附全套资料)

    对于想入行学软件测试的新手来说,首先需要一个高效的学习线路图,还要有全套的学习资料,两者结合才能有最好的学习效果. 授人以鱼不如授人以渔,所以今天我也想把我的经验和经历分享给大家,史上最详细的软件测试 ...

  4. 史上最详细的LXR安装介绍

    史上最详细的LXR安装介绍(Ubuntu14.04+Apache2.4.7) 简介: LXR (Linux Cross Reference)是一个通过交叉索引方便用户查看项目源代码的工具.项目地址:h ...

  5. 史上最详细唇语识别数据集综述

    更新:VIPL官网网页格式更改,导致旧的LRW1000链接无法访问,现已更新LRW1000数据集链接,内部包含申请需要的文件 推荐一个大佬的综述,关于实现唇语识别的多种途径. 说明:本文包括经常用语唇 ...

  6. 史上最详细全中文 Cisco 3560交换机使用手册

    史上最详细全中文 Cisco 3560交换机使用手册 (末尾送交换机安全技术) 目 录 CISCO Catalyst 3560-E系列交换机的功能应用及安全解决方案 3 一.Cisco? Cataly ...

  7. C语言——史上最全通讯录讲解(附源码)

    C语言--史上最全通讯录讲解(附源码) 一.开始界面的打印 二.对六大板块进行定义操作 三.对联系人进行初始化 四.对通讯录进行初始化 4.1动态版本 4.2静态版本 五.通讯录六大功能的具体实现 5 ...

  8. 软件测试自学怎么学?【史上最详细学习路线】(附全套资料)

    对于想入行学软件测试的新手来说,首先需要一个高效的学习线路图,还要有全套的学习资料,两者结合才能有最好的学习效果. 授人以鱼不如授人以渔,所以今天我也想把我的经验和经历分享给大家,史上最详细的软件测试 ...

  9. 史上最详细网络基础知识

    网络技术的基本原理: 1. 网络层次划分 2. OSI七层网络模型 3. IP地址 4. 子网掩码及网络划分 5. ARP/RARP协议 6. 路由选择协议 7. TCP/IP协议 8. UDP协议 ...

  10. RISC-V AI芯片Celerity史上最详细解读(上)(附开源地址)

    RISC-V AI芯片Celerity史上最详细解读(上)(附开源地址) (本文包括Celerity中二值化神经网络的介绍) 作者 陈巍,资深芯片专家,人工智能算法-硬件协同设计专家. 在Hot Ch ...

最新文章

  1. CentOS 7 搭建docker仓库
  2. C#后台导入css和设置前台关键字和描述
  3. REST技术第四步 多个參数注解问题
  4. 测试微信小程序图片预览功能(因初步接触之了解到了不能使用本地图片,以下为公司产品图片)...
  5. Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题
  6. sql LEFT JOIN RIGHT JOIN(左连接)(mysql)
  7. JPA / Hibernate:基于版本的乐观并发控制
  8. easyui 调用dialog中的方法_SolidWorks中标准件库的创建及调用方法
  9. 作者:郭旦怀(1973-),男,博士,中国科学院计算机网络信息中心副研究员、硕士生导师。...
  10. 大数据开发之Hadoop---初始Hadoop
  11. sap此项目以开票无关_大型公司财务共享中心RPA项目实例2则
  12. 架构之美 | 按图索骥,就能做好架构图!
  13. 16、 基于STM32单片机WIFI控制家电插座
  14. Titanic 生存预测(上)
  15. 工作量评估--专家评估法实际操作心得
  16. Spark Steaming管理kafka的offset
  17. 亚马逊出单技巧 掌握财富密码
  18. 超大Excel文件读写 :使用SXSSFWorkbook和EasyExcel方式对比
  19. 开源一个自动录制直播上传投稿的项目
  20. grabcut图像分割的原理简单介绍

热门文章

  1. NSOperation
  2. pre-receive hook declined
  3. Vue项目打包文件过大(优化)
  4. Java、IO流——缓冲流
  5. SourceGenerator入门指北
  6. 解决uni-app小程序获取路由及路由参数
  7. 计算机桌面锁定了没设密码怎么解锁,屏幕锁定怎么解锁?
  8. office软件不显示图标
  9. 两阶段最小二乘法原理_两阶段最小二乘法第一阶段为什么加入原模型外生变量...
  10. 17个改变世界的数学公式