C语言基础--switch
switch格式:
switch (条件表达式)
{
case 整数: // case可以有一个或多个
语句;
break;
case 整数:
语句;
break;
default:
语句;
break;
}
执行说明:
1.拿到条件表达式的返回值(注意返回值必须是整型)
2.利用条件表达式的返回值和switch后面大括号中的每一个case进行比较, 判断条件表达式的返回值和case后面的整数是否相等 条件表达式 == 整数
3.如果条件表达式的返回值等于某一个case后面的整数, 那么就会执行该case后面的语句
4.执行完语句之后如果遇到break就会结束整个switch语句, 也就是说后面的所有语句都不会被执行
5.如果前面的case不满足, 也就是前面的case的整数和条件表达式的返回值不相等就会继续判断后面的case
6.如果前面所有的case都不满足, 就会执行default后面的语句
使用举例:
要求用户输入一个分数,根据输入的分数输出对应的等级
A 90~100
B 80~89
C 70~79
D 60~69
E 0~59
// 1.提示用户输入一个分数
printf("请输入一个0~100的分数, 以回车结束\n"); // 2.定义变量保持用户输入的分数
int score = -; // 3.接收用户输入的值
scanf("%i", &score); //可以对用户输入的数据进行刷选 如 分数小于 0 或 大于 100 怎么怎么样 // 4.根据用户输入的值输出对应的结果
switch (score/) {
case :
printf("A\n");
break;
case :
printf("A\n");
break;
case :
printf("B\n");
break;
case :
printf("C\n");
break;
case :
printf("D\n");
default:
printf("E\n");
break;
}
注意点:
1.Switch得条件表达式注意点
Switch的条件表达式必须是返回整数的表达式, 也就是说()中只能放整数
或者写能够转换为整数的类型也可以, 例如char, 因为char类型可以转换为int类型, 所以写char也可以
switch ('A') {
case :
printf("");
break;
case :
printf("");
break;
default:
printf("other");
break;
}
2.case的取值
Switch中, case后面只能放返回值是整数的表达式或者整数, 或者能够转换为整数的类型
case的取值不能重复
case后面不能放变量, 因为系统在编译的时候会对Switch后面所有的case进行优化, 会根据case后面的常量值, 生成一张取值表
int number = ;
switch () {
case + :
printf("");
break;
case 'A':
printf("");
break;
case : // 异常信息 Duplicate case value '65'
printf("");
break;
case number:// 异常信息 Expression is not an integer constant expression
printf("");
break;
default:
printf("other");
break;
}
3.default的位置问题
Switch中的default可以随便放
无聊default写到什么地方, 它都会最后执行(只有前面所有的case都不满足的情况才会执行)
只要某一个case满足, 那么后面所有的case和default都会失效 case语句的穿透问题
同理: 只要default满足, 那么所有的case都会失效
/*
结束switch语句:
1.遇到break
2.执行到switch对应的大括号的结束 }
*/
switch () {
default:
printf("other\n");
break;
case :
printf("");
break;
case :
printf("");
break;
case :
printf("");
// 没有写break 如果switch中有一个case满足了条件, 那么其它所有的case和default都会失效\
即相当于case default都不存在了 程序一直往下执行 直到遇到break或switch结束大括号}才跳出
case :
printf("");
break;
}
省略break示例:
// 从键盘输入一个月份,输出对应季节 12~2 冬季 3~5 春季 6~ 8 夏季 9~11 秋季
printf("请输入一个1~12的月份, 以回车结束\n");
int number = -;
scanf("%i", &number);
switch (number) {
case :
case :
case :
printf("冬季");
break;
case :
case :
case :
printf("春季");
break;
case :
case :
case :
printf("夏季");
break;
case :
case :
case :
printf("秋季");
break;
default:
printf("让我凌乱会儿\n");
break;
}
C语言基础--switch的更多相关文章
- C语言基础回顾
第一章 C语言基础 1. C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...
- Java学习总结(二)----Java语言基础
1. Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...
- JavaScript基础---语言基础(1)
写在前面: 通过四篇博客把JS基础中的基础整理一下,方便自己查阅,这些内容对于实际项目开发中也许并不会在意,但是作为JS的语言基础,自觉还是应该熟悉.在完成这三篇博客(JavaScript基础---语 ...
- Java之--Java语言基础组成(关键字、标识符、注释、常量和变量、运算符)
Java语言基础组成-关键字.标识符.注释.常量和变量.运算符 Java语言由8个模块构成,分别为:1.关键字:2.标识符(包名.类名.接口名.常量名.变量名等):3.注释:4.常量和变量:5.运算符 ...
- 【quick-cocos2d-x】Lua 语言基础
版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- C语言基础(转载自大海笔记)
# C语言基础2015年03月26日10:04:411. 语言排行榜C——java——objective-C2. 进制:进制:进位机制.用普通的话讲,应该为人为的定义一种度量来标识一样东西 ...
- 01_C语言基础
内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...
- (cljs/run-at (->JSVM :browser) "语言基础")
前言 两年多前知道cljs的存在时十分兴奋,但因为工作中根本用不上,国内也没有专门的职位于是搁置了对其的探索.而近一两年来又刮起了函数式编程的风潮,恰逢有幸主理新项目的前端架构,于是引入Ramda. ...
随机推荐
- html页面的绝对路径和相对路径
在用springmvc架构开发网站的过程中,离不开开发前台html页面,html经常需要使用本地相关的资源,如:图片,js,css等,一般情况下,我们可以通过使用相对路径的方式来对这些资源进行指向和访 ...
- html的空格和换行显示【摘自网络】
一.HTML 代码中的所有连续的空格或空行(换行)都会被显示为一个空格,不管是内容还是标签之间. 二.当我们想让它们在同一行连续显示时,就让所有的代码之间没有空格,也不要换行. 三.当我们想要显示连续 ...
- 【HTML5 】<script>元素async,defer异步加载
原文地址:HTML5′s async Script Attribute原文日期: 2010年09月22日翻译日期: 2013年08月22日 (译者注: 异步加载,可以理解为无阻塞并发处理.) (译者再 ...
- 【转】loading 三种实现方式
转载:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=76872 一.通过动画实现 定义res/anim/loading.xml如 ...
- _CRT_NONSTDC…与_CRT_SECURE…
目录 第1章说明 1 1.1 _CRT_NONSTDC_NO_WARNINGS 1 1.2 _CRT_NON_CONFORMING_SWPRINTFS 2 1.3 _CRT_SECU ...
- WinForm应用程序之注册模块的设计与实现
Posted on 2012-11-13 10:21 星星之火116 阅读(3260) 评论(4) 编辑 收藏 我们在安装一些桌面应用程序的时候,往往在会有提示当前用户使用的是试用版,要进行注册.刚好 ...
- 对Linux新手非常有用的 20个命令
你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳. ...
- Reverse Integer [LeetCode]
Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, return -321 click to ...
- DOM操作 append prependTo after before
通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作.但实际上一般开发者都习惯性的先定义好HTML结构,但这样就非常不灵活了. 试想下这样的情况:如果我们通过AJAX获取到数 ...
- SAP smartforms之Zebra print control language
因为在做个小标签的时候需要将部分字符旋转180度,在scn上找了很久也发布了自己的提问,不过最终的结果却不尽人意.Rotated text in smartforms need use the PCL ...