switch在内存中的实现机制
首先我们知道if...else和else...if这些条件判断是依次判断,我们都会把数据量大的尽量放到前面去执行先判断以提高程序效率,而switch实现机制和if...else不一样,switch和case判断的条件上下顺序无关,它在内存中的实现是靠一张表依次存放case的,无论你编写是case 1,2,3,4,5还是case5,4,3,2,1在内存中存放都是按1,2,3,4,5依次存放的,所以case是否按顺序编写它执行效率都是一样的
让我们看看内存就知道了例子如下:
switch中case按顺序编写在内存中如下图
可以看到按顺序编写在地址表中是按顺序依次存储的
如果不按顺序编写代码看看是否是按顺序依次存储的呢,如下图
看图可以知道如果不按顺序编写在地址表中也是会依次存放的
刚实验的都是连续(如12345)的值的,如果是不连续(53216缺少一个值)的值编写的会怎样,如下图
可以看到如果缺一个的话会把缺的位置上存放的是default的地址
如果把default去除会怎样如下图
可以看到如果缺一个并且代码没有default的话会把缺的位置上存放的是system的地址
还有一种情况,如果是不连续并且跨度比较大的话会怎样(如case1,11,21,3)
可以看到case相差大的话在地址表中也是按顺序依次存储的
switch在内存中的实现机制相关推荐
- SQL Server 内存中OLTP内部机制概述(二)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...
- java成员变量和局部变量的初始化和内存中的运行机制
成员变量: 当系统加载类或创建类的实例时,系统会自动为成员变量分配内存空间,并在分配内存空间后,自动为成员变量指定初始值. eyeNum是类属性.name是实例属性 所有person实例访问eyeNu ...
- 成员变量的初始化和内存中的运行机制
成员变量被分为类变量和实例变量两种,定义成员变量时没有static修饰的就是实例变量,有static修饰的就是类变量.其中类变量从该类的准备阶段起开始存在,直到系统完全销毁这个类,类变量的作用域与这个 ...
- 【C 语言】文件操作 ( C 语言中的文件操作函数 | 磁盘与内存缓冲区 | 缓冲区工作机制 )
文章目录 一.C 语言中的文件操作函数 二.磁盘与内存缓冲区 三.缓冲区工作机制 一.C 语言中的文件操作函数 读取 文本文件 可以使用 getc , fgets , fscanf 函数 , 向 文本 ...
- Java基础-Java中的内存分配与回收机制
Java基础-Java中的内存分配与回收机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一. 二. 转载于:https://www.cnblogs.com/yinzhengji ...
- syslog 向内存中缓存_动画:深入浅出从根上理解 HTTP 缓存机制及原理!
HTTP 缓存,对于前端的性能优化方面来讲,是非常关键的,从缓存中读取数据和直接向服务器请求数据,完全就是一个在天上,一个在地下. 我们最熟悉的是 HTTP 服务器响应返回状态码 304,304 代表 ...
- .NET中的内存管理,GC机制,内存释放过程
引言:作为一个.NET程序员,我们知道托管代码的内存管理是自动的..NET可以保证我们的托管程序在结束时全部释放,这为我们编程人员省去了不少麻烦,我们可以连想都不想怎么去管理内存,反正.NET自己会保 ...
- 探索Android中的Parcel机制(上)
一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化--,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象.主要应用是利用外部存储设备保存对象状态 ...
- 探索Android中的Parcel机制(上) .
一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化--,其作用是能将数据对象存入字节流当中,在需要时重新生成对象.主要应用是利用外部存储设备保存对象状态, ...
- 直接载入内存中的DLL
http://www.cppblog.com/mybios/archive/2006/11/21/15483.html 作者:任明汉下载源代码前言你可能不希望在发布程序时附带上一个外部的 DLL,因为 ...
最新文章
- Java语言深入:构造方法调用浅谈
- 02.德国博士练习_01_cluster_install
- 思维习惯埋下的陷阱:在eVC中使用Slider、Spin等控件
- 如何在官网下载java JDK的历史版本
- X86汇编语言从实模式到保护模式10:进入保护模式
- python全自动化渗透工具_Python自动化渗透(一)
- python 模块下载资源汇总
- 安全培训教程之------利用IIS写权限漏洞
- 如何用python裁剪图片
- word刷子刷格式_用word格式刷快速调整文档格式-word技巧-电脑技巧收藏家
- WinRAR制作单文件(便携版)
- 【CAN】 PCAN Explorer5 常用操作使用简介
- 目前是大专学历如何快速提升到本科学历?学历提升有哪几种形式呢?
- Python语言程序设计——实验八
- 20175208 张家华 MyCP
- NOIP 2016 PJ T4 魔法阵
- [腾讯会议]接入耳机麦克风无声响
- VCIP2020:相同主观质量下基于学习的UGC短视频低码率编码
- 经典设计原则:单一职责原则(SRP)
- 如何给U盘和移动硬盘加密?
热门文章
- ADS史密斯圆阻抗匹配
- 易语言 linux 反编译,易语言反编译工具(E-Code Explorer)
- aforge java_C#:视频与图像抓取(二)AForge.NET + WPF | 春小麦
- 3DMAX哪个版本最稳定?3DMAX哪个版本最好用?
- 理正深基坑弹性计算方法_理正深基坑软件应用全参数说明书
- 打开小米随身wifi的无线网卡功能
- python——基于Pandas读取asc文件并保存为csv格式
- 安装PSPNet 遇到的问题
- socket通信之epoll模型
- AD 软件的学习--基本操作