Switch语句:C v/s中的逻辑是否不同.其他语言如Java?

Tan*_*nay 5 c c++ java if-statement switch-statement

我正在阅读有关C编程的教程.它说:

switch语句实际上完全不同(来自其他语言),实际上是一个"跳转表".您可以只放置导致整数的表达式,而不是随机布尔表达式,这些整数用于计算从开关顶部到匹配该值的部分的跳转.这里有一些代码我们将分解以理解"跳转表"的概念.

但是,需要比较switch语句的情况,直到找到匹配项(否则返回default).

它与多个if-else语句有什么不同呢?或者,它只是一个语法糖?我错过了一些重要的东西吗?

Get*_*Der 3

看起来它的实现方式取决于编译器。 Switch case 语句如何在内部实现或工作?

但一般来说,switch 语句有一个允许编译器对其进行优化的前提条件,这与 if 语句不同,即您要比较的项始终是整数类型(char/int/long)。

其他语言允许将可在编译时计算的原语用作 switch 语句变量(C# 中的字符串)。

但总的来说,除了潜在的加速(以及如果不打破可能发生的失败)之外,一堆“如果”没有行为差异。