C++基础--if/else和switch/case的区别
if和switch的区别:
一、语句的格式:
if/else的写法格式如下:
- int nA, nB;
- scanf_s("%d", &nA); //输入整数并赋值给变量a
- scanf_s("%d", &nB);
- ("%d", &nB); //输入整数并赋值给变量b
- if (nA > nB)
- {
- printf("%d greater than %d", nA, nB);
- }
- else
- {
- printf("%d smaller than %d", nA, nB);
- }
swith/case的写法如下:
- int nA, nB;
- scanf_s("%d", &nA); //输入整数并赋值给变量a
- nB = nA + ;
- switch (nA)
- {
- case :
- printf("when A is %d, B is", nA, nB);
- case :
- printf("when A is %d, B is", nA, nB);
- default:
- printf("when A is %d, B is", nA, nB);
- }
二、逻辑结构:
从上面if/else与switch/case格式的区别可以看出:
A: if/else能根据逻辑判断输出相应的语句,也就是说if/else更多的是进行逻辑判断;
switch/case从某种角度上来说,没有相应的逻辑比较判断,而是根据给出项跳转到相应的分支;
B: if判断相应的逻辑语句,返回true/false,每条if语句都会执行一次逻辑判断;
switch/case会建立相应的跳转表,根据跳转表的项跳转到相应的分支。
三、效率
从两种语句的判断上可以看出:
A: 从某种程度上,Switch/case比if/else的效率要高,除非if/else在第一次逻辑判断就为true;
B: Switch/case需要建立一张跳转表,因此需要一定的空间的,更像是以空间换效率。
C: if/else能进行逻辑判断,而Switch不行,因此在需要进行逻辑判断时使用if/else语句;
四、支持的数据类型
Switch/case只支持部分数据类型:int、long和枚举类型,由于byte、short、char都可以隐含转换为int,因此:switch支持的数据类型为:byte、short、char,int、long和枚举类型,不支持:boolean、float、double;
if/else支持更多的数据类型,如String, double等;
建议:在能用Switch/case的情况下,尽量用Switch/case来提高效率;
C++基础--if/else和switch/case的区别的更多相关文章
- 多重if else和switch case的区别
int main(void) { int id; scanf_s("%d",&id); switch(id) { case 2: printf("John\n&q ...
- 多重if 与 switch case的区别
多重if:可以做等值操作也可以做区间操作 switch case:只能做等值操作
- 10-14C#基础--语句(switch....case和for...循环)
10-14C#基础--语句(2) 一.课前作业:“跟电脑猜拳” 二.switch(定义的变量,参数值)......case.... 注:switch...case大多用于值类型的判断,这里不同于if表 ...
- c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)
1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...
- Python | 基础系列 · Python为什么没有switch/case语句?
与我之前使用的所有语言都不同,Python没有switch/case语句.为了达到这种分支语句的效果,一般方法是使用字典映射: def numbers_to_strings(argument): sw ...
- Java基础语法学习(1)switch...case
switch...case的标准语法 switch(待选择的变量) { case 值1:语句1; break; case 值2:语句2: break; ....... case 值n:语句n; bre ...
- JavaScript基础知识(if、if else、else if、while、switch...case语句)
13.语句 概念:就是分号(:) 代表一条语句的结束 习惯:一行只编写一条语句:一行编写多条语句(代码可读性较差) 语句块:可以包含多条语句 "{ }"将多条语句包裹 u ...
- Java基础之循环语句、条件语句、switch case 语句
Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...
- J S 脚本语言 if() { if { } else { } } var a =100; switch { case ( ) break ; } 基础详解 , 最下面有例子
注释语法 注释语法// 多行注释/ JS输出语句 JS样式尽量靠最下面写 <script type="text/javascript">//嵌入JS开始代码 //ale ...
随机推荐
- sql 计算奇数还是偶数
& 运算符来判断奇数还是偶数 sql判断奇数还是偶数 3&1 返回 1 2&1 返回0 0&1 返回 0
- C#一些面试知识题
1.简述 private. protected. public.internal 修饰符的访问权限答:private:私有成员, 在类的内部才可以访问(只能从其声明上下文中进行访问). protect ...
- 基于【 Docker】二 || Docker的入门安装
一.前提条件 本文介绍 Docker CE 的安装使用. 目前,CentOS 仅发行版本中的内核支持 Docker. Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3. ...
- js原生方法的重写
讲干货,不啰嗦,通过prototype可以获取到JavaScript的原型对象,进而可以在对象原型上添加新的属性和方法,当该方法与原方法名称一样时会覆盖原方法既:重写,当不一样时既:添加 如:实现数组 ...
- C++ STL 之 函数对象适配器
谓词是指普通函数或重载的 operator()返回值是 bool 类型的函数对象(仿函数).如果operator 接受一个参数,那么叫做一元谓词,如果接受两个参数,那么叫做二元谓词,谓词可作为一个判断 ...
- S2-048
前言 S2-048漏洞和struts2-struts1-plugin插件有关,该插件用于将Struts1的action也能在struts2上运行,提高兼容性(作用是我猜的~) 正文 我们先看下这个插件 ...
- string和char*
string转const char* string s = "hello furong."; const char *c = s.c_str(); string转char* str ...
- linux文件系统初学
Linux磁盘分区和目录 Linux发行版之间的差别很小,差别主要表现在系统管理的特色工具以及软件包管理方式的不同. Windows的文件结构是多个并列的树状结构,最顶部是不同的磁盘(分区),如C,D ...
- openstack安装部署——计算服务(控制节点&计算节点)前言
1.前言Openstack计算服务通过认证服务获取认证:通过镜像服务获取镜像:通过仪表盘提供的用户界面与用户交互.镜像的存取受工程和用户的限制,配额受工程的限制(例如不同工程允许虚拟机实例数量不同). ...
- 使用RevitNet操作多个版本的Revit
在Revit二次开发中,如果只是简单的从模型中提取数据或不需要界面对Revit进行修改,我们一般使用RevitNet. 如果对RevitNet不熟悉的,请参考:RevitAPI进阶之独立进程内读取.写 ...