C语言switch史上最详细的讲解
原文链接
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语句中使用的表达式必须具是
int
或enum
类型,否则如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史上最详细的讲解相关推荐
- c语言事件结构体,C语言结构体史上最详细的讲解
struct结构体数据类型 前言 我们知道,在C语言中有一些基本的数据类型,如char int float long double string(c99) 等等数据类型,他们可以表示一些事物的基本属性 ...
- 史上最详细的讲解,第一次如何上传本地代码到github
虽然做开发了一年多,但是每次使用git上传代码都是从公司私服上下载下来的代码,里面已经有了git的上传信息,上传时直接在idea里上传,但是没有研究过第一次是如何上传的.最近自己想开发一个网站,我做全 ...
- 自学软件测试怎么学?【史上最详细学习路线】(附全套资料)
对于想入行学软件测试的新手来说,首先需要一个高效的学习线路图,还要有全套的学习资料,两者结合才能有最好的学习效果. 授人以鱼不如授人以渔,所以今天我也想把我的经验和经历分享给大家,史上最详细的软件测试 ...
- 史上最详细的LXR安装介绍
史上最详细的LXR安装介绍(Ubuntu14.04+Apache2.4.7) 简介: LXR (Linux Cross Reference)是一个通过交叉索引方便用户查看项目源代码的工具.项目地址:h ...
- 史上最详细唇语识别数据集综述
更新:VIPL官网网页格式更改,导致旧的LRW1000链接无法访问,现已更新LRW1000数据集链接,内部包含申请需要的文件 推荐一个大佬的综述,关于实现唇语识别的多种途径. 说明:本文包括经常用语唇 ...
- 史上最详细全中文 Cisco 3560交换机使用手册
史上最详细全中文 Cisco 3560交换机使用手册 (末尾送交换机安全技术) 目 录 CISCO Catalyst 3560-E系列交换机的功能应用及安全解决方案 3 一.Cisco? Cataly ...
- C语言——史上最全通讯录讲解(附源码)
C语言--史上最全通讯录讲解(附源码) 一.开始界面的打印 二.对六大板块进行定义操作 三.对联系人进行初始化 四.对通讯录进行初始化 4.1动态版本 4.2静态版本 五.通讯录六大功能的具体实现 5 ...
- 软件测试自学怎么学?【史上最详细学习路线】(附全套资料)
对于想入行学软件测试的新手来说,首先需要一个高效的学习线路图,还要有全套的学习资料,两者结合才能有最好的学习效果. 授人以鱼不如授人以渔,所以今天我也想把我的经验和经历分享给大家,史上最详细的软件测试 ...
- 史上最详细网络基础知识
网络技术的基本原理: 1. 网络层次划分 2. OSI七层网络模型 3. IP地址 4. 子网掩码及网络划分 5. ARP/RARP协议 6. 路由选择协议 7. TCP/IP协议 8. UDP协议 ...
- RISC-V AI芯片Celerity史上最详细解读(上)(附开源地址)
RISC-V AI芯片Celerity史上最详细解读(上)(附开源地址) (本文包括Celerity中二值化神经网络的介绍) 作者 陈巍,资深芯片专家,人工智能算法-硬件协同设计专家. 在Hot Ch ...
最新文章
- CentOS 7 搭建docker仓库
- C#后台导入css和设置前台关键字和描述
- REST技术第四步 多个參数注解问题
- 测试微信小程序图片预览功能(因初步接触之了解到了不能使用本地图片,以下为公司产品图片)...
- Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题
- sql LEFT JOIN RIGHT JOIN(左连接)(mysql)
- JPA / Hibernate:基于版本的乐观并发控制
- easyui 调用dialog中的方法_SolidWorks中标准件库的创建及调用方法
- 作者:郭旦怀(1973-),男,博士,中国科学院计算机网络信息中心副研究员、硕士生导师。...
- 大数据开发之Hadoop---初始Hadoop
- sap此项目以开票无关_大型公司财务共享中心RPA项目实例2则
- 架构之美 | 按图索骥,就能做好架构图!
- 16、 基于STM32单片机WIFI控制家电插座
- Titanic 生存预测(上)
- 工作量评估--专家评估法实际操作心得
- Spark Steaming管理kafka的offset
- 亚马逊出单技巧 掌握财富密码
- 超大Excel文件读写 :使用SXSSFWorkbook和EasyExcel方式对比
- 开源一个自动录制直播上传投稿的项目
- grabcut图像分割的原理简单介绍