C++性能剖析教程之switch语句

2020-01-06 19:28:25于丽

前言

几乎每本面向初学者的C语言或C++书籍在前面两章都会提到分支控制语句if……else和switch……case,在某些情况下这两种分支控制语句可以互相替换,但却很少有人去深究在if……else和switch……case语句的背后到底有什么异同?应该选择哪一个语句才能使得效率最高?要回答这些问题,只能走到switch语句的背后,看看这些语句到底是怎么实现的。

基本格式

switch语句的基本格式如下:

switch (表达式) {
case 常量表达式1:《语句序列1》《break;》 //《》中的内容可省
……
case 常量表达式n:《语句序列n》《break;》 //同上,下同
《default:语句序列》
}

其中:

  • 表达式——称为“条件表达式”,用作判断条件,取值为整型、字符型、布尔型或枚举型。
  • 常量表达式——由常量构成,取值类型与条件表达式相同。
  • 语句序列——可以是一个语句也可以是一组语句。

    if语句与switch语句

    相信学过C/C++的同学对这两个语句的异同早就了如指掌,if语句作为条件判断,满足条件进入if语句块,不满足条件则进入else语句块,而且if和else语句块又可以继续嵌套if语句。switch则是通过判断一个整型表达式的值来决定进入到哪一个case语句中,如果所有case条件都不满足则进入到default语句块。