if...else是顺序访问。 switch...case访问条件分支的方式像数组一样,是随机访。 他们各自的特点: 1、 总体上说,switch...case 效率要高于同样条件下的if...else,特别是当条件分支较多时。 2、switch...case占用较多的代码空间,因为它要生成跳表,特别是当case常量分布范围很大但实际有效值又比较少的情况,switch...case的空间利用率将变得很低。例如上面的代码,如果把case 10改成case 100,则会生成101个表项,而大部分表项是指向同一分支(default分支)。switch...case是在以空间换时间。 3、switch...case只能处理case为常量的情况,对非常量的情况是无能为力的。例如 if (a > 1 && a < 100),是无法使用switch...case来处理的。
|