Aar*_*lla 35

它们非常相似,但每个都有一些特殊功能.

开关

  • switch通常比很多嵌套更紧凑if else,因此更具可读性
  • 如果省略break两个切换案例之间的区域,则可以使用许多类C语言进入下一个案例.有了if else你需要一个goto(这是不是很高兴你的读者...如果语言支持goto的话).
  • 在大多数语言中,switch只接受基本类型作为键和常量作为大小写.这意味着编译器可以使用非常快的跳转表对其进行优化.
  • 目前尚不清楚如何switch正确格式化.从语义上讲,这些案例是跳跃目标(如标签goto),应该是向左齐平的.当你有大括号时情况变得更糟:

    case XXX: {
    } break;
    
    Run Code Online (Sandbox Code Playgroud)

    或者大括号是否应该成为他们自己的行?闭合支撑应该落后break吗?这有多难以理解?等等

  • 在许多语言中,switch只接受一些数据类型.

如果别的

  • if 允许复数表达式在条件中,而switch想要一个常量
  • 你不能不小心忘记它们break之间,if但你可以忘记else(特别是在cut'n'paste期间)
  • 它接受所有数据类型.


小智 5

IF else - IT 用于做出决策

Switch 语句 - 用于根据 case 值列表测试给定变量的值。


use*_*421 5

主要区别在于,通常通过索引跳转立即switch发送给相关人员,而不是必须评估链中所需的所有条件,这意味着到达链末端的代码比到达链末端的代码更慢。开始。caseif-else

这反过来又对链没有的switch语句施加了一些限制if-else:它不能处理所有数据类型,并且所有case值都必须是常量。