为什么 Java 中没有字节或短文本?

2022-08-31 19:38:53

我可以通过将L附加到值来创建一个文字长;为什么我不能以某种类似的方式创建文字短或字节?为什么我需要将 int 文本与强制转换一起使用?

如果答案是“因为C中没有短文字”,那么为什么C中没有短文字?

这实际上并没有以任何有意义的方式影响我的生活。写(短)0而不是0S或其他东西很容易。但是这种不一致让我感到好奇。这是当你深夜起床时困扰你的事情之一。有人在某个时候做出了一个设计决策,以便为某些基元类型输入文本,但不能为所有基元类型输入文本。为什么?


答案 1

在C中,至少意味着具有CPU的“自然”字大小,并且可能意味着“更大的自然”字大小(在最后一部分中不确定,但它也可以解释为什么并且在x86上具有相同的大小)。intlongintlong

现在,我的猜测是:对于和,有一个完全适合机器寄存器的自然表示。然而,在大多数CPU上,较小的类型在使用之前必须填充到一个。如果是这样的话,你也可以有一个演员阵容。intlongbyteshortint


答案 2

我怀疑这是一种“除非它真正增加价值,否则不要为语言添加任何东西”的情况 - 它被认为增加的价值很小,不值得。正如你所说,这很容易绕过,坦率地说,无论如何它都很少是必要的(只是为了消除歧义)。

在C#中也是如此,我从来没有特别错过任何一种语言。我在Java中错过的是无符号字节类型:)