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. ...
随机推荐
- asmca无法创建ASM磁盘
现象 grid用户使用asmca无法创建asm磁盘,如下图 分析 如图所示,报错说是 Grid Infrastructure 出了问题.那么 Grid Infrastructure 是什么 ? 在安装 ...
- Selenium Grid 运行报错 Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities
Selenium Grid 运行报错 : Exception thrown in Navigator.Start first time ->Error forwarding the new se ...
- java 集合2(迭代器)
迭代器方法:(把迭代器想象成抓娃娃机的爪子) hasNext() 问是否有元素可遍历,如果有元素可以遍历,返回true,否则返回false 工作原理:这一个迭代的过程是这样的,获取到迭代器时候 ...
- 精简android4.2
cd /system/apprm YouTube.*rm Settings.*rm VoiceDialer.*rm Phone.*rm QuickSearchBox.*rm RSSReader.*rm ...
- C/C++大数库简介
在网络安全技术领域中各种加密解密算法的软件实现上始终有一个共同的问题就是如何在普通的PC机上实现大数的运算.我们日常生活中所应用的PC机内部字长多是32位或64位,但是在各种加密解密的算法中为了达到一 ...
- iOS应用架构谈 组件化方案
转载: iOS应用架构谈 组件化方案 简述 前几天的一个晚上在infoQ的微信群里,来自蘑菇街的Limboy做了一个分享,讲了蘑菇街的组件化之路.我不认为这条组件化之路蘑菇街走对了.分享后我私聊了Li ...
- FCKeditor jsp配置
FCKeditor jsp配置 FCKeditor是sourceforge.net上面的一个开源项目,主要是实现在线网页编辑器的功能,可以让web程序拥有如MS Word这样强大的编辑功能.官方网站为 ...
- hdu---1024Max Sum Plus Plus(动态规划)
Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 循环语句for
循环语句for 格式: for(int i=1/*初始条件*/;i<=100/*循环条件*/;i++/*状态改变*/) { //循环体,执行代码:(break:跳出循环体) } 给出初始条件,先 ...
- Java--常用类summary(二)
/* 1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类.StringBuffer供 ...