1
44
我认为在某种程度上,这可能是一个基于开关的典型使用的任意决定。 一个开关基本上可以用两种方式实现(或者原则上是一种组合):对于少数情况,或者值广泛分散的情况,一个开关基本上相当于一个临时变量上的一系列ifs(被打开的值必须只评估一次)。对于在数值上或多或少连续的情况下,使用一个交换表(Java中的TabLSwitCH指令),从而在表中有效地查找跳转的位置。 原则上,这些方法都可以使用长值而不是整数。但我认为,平衡指令集和编译器的复杂性与实际需要可能只是一个实际的决定:真正需要切换一段时间的情况非常罕见,以至于必须重新编写一系列if语句,或以其他方式进行循环(如果所讨论的长值是clo,则可以接受)。SE一起,你可以在你的Java代码中切换INT的结果减去最低值。 |
2
20
因为他们没有在字节码中实现必要的指令 真的? 不要写那么多的案例,不管你的代码是如何“生产就绪”的… [编辑:摘自对该答案的评论,并在背景上添加了一些内容]
确切地说,2_
许多
任何一个有足够长的时间来容纳更多的方法的案例和程序都将是非常可怕的!任何语言。(在任何语言的代码中,我所知道的最长的函数都有点超过6K sloc_
重申带回家的信息,希望
|
3
3
因为查阅表格索引必须是32位。 |
4
-9
在32位体系结构中,长的用两个词表示 . 现在,想象一下,如果由于同步不足,switch语句的执行会观察到一个较长的段,其中一个写的32位高位,另一个写的32位低位!它可以尝试去……谁知道在哪里!基本上是随机的。即使这两个写都代表了switch语句的有效事例,它们有趣的组合可能既不会导致第一个也不会导致第二个--或者更糟的是,它可能导致另一个有效但不相关的事例! 至少对于一个int(或更小的类型),无论您搞砸了多少,switch语句至少会读取一个 有人真的写了 而不是“空气稀薄”的值。 当然,我不知道真正的原因(已经15年多了,我没注意那么久!)但是如果你意识到这样一个构造是多么不安全和不可预测,你会同意这是一个 很好的理由 不到 曾经 打开long(并且只要-pun预期-将有32位机器,这个原因将保持有效)。 |