前段时间在工作中遇到了一个关于条件判断语句的问题,在if语句,if else if语句和switch case语句这三者之间分析,使用其中最有效率的一种方法。

所以就将这个问题作为自己第一篇博客的主要内容吧。

  if语句,if else if语句和switch case语句都属于流程控制语句。

  在只需要判断一个条件的时候,自然是使用if语句方便有效;但是当判断条件很多的时候,我们可以使用多个if语句或者if...else if语句或者switch case语句。

对于这三者的选择,下面将做一些具体分析;对于后两者的选择,又将涉及到程序执行效率的问题。

  if...else if语句和多个if语句的区别还是很大的,if...else if在任何一个环节满足条件的时候就将会终止判断,只处理一个满足条件的情况;而对于多个if语句,

将会对每一个判断条件进行判断,自然而然会导致程序的执行效率降低。在多个判断条件的情况下,使用if...else if语句相对于使用多个if语句而言,可以减少程序

的判断次数,提高效率。

  在多个判断条件的情况下,不仅可以使用if...else if语句,还可以使用switch case语句。一般情况下,当判断条件较多的情况下,使用switch case语句的

效率会高于使用if...else if语句。switch...case与if...else if的根本区别在于,switch...case会生成一个跳转表来指示实际的case分支的地址,而这个跳 转表的

索引号与switch变量的值是相等的。从而,switch...case不用像if...else if那样遍历条件分支直到命中条件,而只需访问对应 索引号的表项从而到达定位分支的目的。

所以从效率上来说由于if...else if的遍历性,代码执行效率是不高的。

  从汇编层面的分析,请见:http://www.2cto.com/os/201404/291376.html

if语句,if...else if语句和switch...case语句的区别和分析的更多相关文章

  1. 为什么说在使用多条件判断时switch case语句比if语句效率高?

    在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...

  2. java中的Switch case语句

    java中的Switch case 语句 在Switch语句中有4个关键字:switch,case break,default. 在switch(变量),变量只能是整型或者字符型,程序先读出这个变量的 ...

  3. switch… case 语句的用法

    switch… case 语句的用法   public class Test7 { public static void main(String[] args) { int i=5; switch(i ...

  4. Python | 基础系列 · Python为什么没有switch/case语句?

    与我之前使用的所有语言都不同,Python没有switch/case语句.为了达到这种分支语句的效果,一般方法是使用字典映射: def numbers_to_strings(argument): sw ...

  5. 为什么switch...case语句比if...else执行效率高

    在C语言中,教科书告诉我们switch...case...语句比if...else if...else执行效率要高,但这到底是为什么呢?本文尝试从汇编的角度予以分析并揭晓其中的奥秘. 第一步,写一个d ...

  6. JavaScript基础知识(if、if else、else if、while、switch...case语句)

    13.语句 概念:就是分号(:) 代表一条语句的结束 习惯:一行只编写一条语句:一行编写多条语句(代码可读性较差) 语句块:可以包含多条语句     "{ }"将多条语句包裹 u ...

  7. C语言中switch case语句可变参实现方法(case 参数 空格...空格 参数 :)

    正常情况下,switch case语句是这么写的: : : ... ;break ; default : ... ;break ; } 接下来说一种不常见的,但是对于多参数有很大的帮助的写法: 先给一 ...

  8. Java基础之循环语句、条件语句、switch case 语句

    Java 循环结构 - for, while 及 do...while 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. Java中有三种主要的循环结构: whi ...

  9. python技巧 switch case语句

    不同于C语言和SHELL,python中没有switch case语句,关于为什么没有,官方的解释是这样的 使用Python模拟实现的方法: def switch_if(fun, x, y):    ...

随机推荐

  1. EF收集

    http://www.cnblogs.com/end/archive/2011/08/18/2144250.html http://www.cnblogs.com/zzdfc/archive/2009 ...

  2. SQL使用存儲過程訪問不同服務器

    用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset('SQLOLEDB', 'sql服 ...

  3. GCD的一点理解

    大家都知道GCD 有两种队列:一种是串行队列,一种是并发队列.什么是串行队列?串行队列就是队列中的代码块一个一个按顺序执行,每当上一个代码块执行结束后下一个代码块才会执行.打个比方,如果队列是一些首尾 ...

  4. 读书笔记之 - javascript 设计模式 - 门面模式

    门面模式有俩个作用: 简化类的接口 消除类与使用它的客户代码之间的耦合 在javascript中,门面模式常常是开发人员最亲密的朋友.它是几乎所有javascript库的核心原则,门面模式可以使库提供 ...

  5. 【随记】修复TortoiseGit文件夹和文件状态图标不显示问题

    一. 运行环境: 操作系统 Windows 10 64bit TortoiseGit (2.2.0.0) 64bit msysgit(2.9.2.1) 64bit 注意:请确保环境正确,软件的位数相匹 ...

  6. 移动端利用iscroll实现小图变大图

    大图界面,使用iscroll,定义如下: var myScroll; function loaded(){ myScroll = new iScroll('wrapper', { zoom:true, ...

  7. 将VIM配置成强大的IDE(三)

    上一节,我们知道了,我们了解了怎么配置插件的下下载. 现在,我们就可以去DIY我们的IDE了,主要介绍taglist插件和NERDTree插件,最终的结果是: 1.安装Taglist插件. Tagli ...

  8. [Python笔记]第十六篇:web框架之Tornado

    Tornado是一个基于python的web框架,xxxxx 安装 python -m pip install tornado 第一个Tornado程序 安装完毕我们就可以新建一个app.py文件,放 ...

  9. iOS: 学习笔记, 动态添加按钮

    1. 新建iOS -> Single View Application. 2. 个性控制器文件YYViewController.m(此处修改为你相应的控制器文件名) // // YYViewCo ...

  10. APCS

    arm汇编程序中,R0,R1,R2,R3,R12都是作为中间寄存器,而R4-R11是不能随便使用的,暂时我还不知它们的用途.所以,中间寄存器,在程序运行的开始处与结束的时候值是可以不一样的,也就是说中 ...