一、问题
if语句和 switch 语句都是⽤来构成选择结构的。switch 语句⽤于构成⼀个多分⽀选择结构,if语句⽤于构成只有两个分⽀的选择结构,通过if语句的嵌套,也可以构成多分⽀选择结构。那么,什么时候使⽤if语句的嵌套,什么时候使⽤ switch 结构,⼆者各有什么优缺点呢?
二、解答
if语句由多个条件构成多分⽀,⽽ switch 由⼀个表达式构成多分⽀,它基于表达式的具体取值⽽构成多分⽀。这样看来,可以由 switch 构成的多分⽀结构,必须能表示成由⼀个表达式的值控制执⾏流程的形式。对于由不同条件嵌套构成的多分⽀结构,⽆法⽤ switch来表示。
⽽这种可由⼀个表达式控制的多分⽀结构,其表达式的值还必须能表⽰成有限个离散点,或者取值的⼀个⽅向可以为⽆限,因为此时可以⽤ default 处理。但 switch 中只能有 ⼀个 default,所以它不适合处理两个⽅向上都是⽆限值的情况,这时只能借助 if 的嵌套来实现。
如果问题性质具有明显的多个离散点,每个点处执⾏不同处理的特点,这时⽤ switch 语句⽐⽤多个if语句程序结构要清晰很多。
总之,if语句结构灵活,能处理任意多分⽀;switch 结构简单,能处理的问题有限, 但⽤ switch 实现的程序逻辑结构清晰。
三、总结
两个结构处理复杂问题时各有千秋,使⽤时可以灵活应⽤,但处理简单结构,有if...else 就够⽤了,不要⽤ switch 去处理双分⽀,这和⽤⽜⼑杀鸡没什么区别。