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期间)主要区别在于,通常通过索引跳转立即switch发送给相关人员,而不是必须评估链中所需的所有条件,这意味着到达链末端的代码比到达链末端的代码更慢。开始。caseif-else
这反过来又对链没有的switch语句施加了一些限制if-else:它不能处理所有数据类型,并且所有case值都必须是常量。