为什么 Java 中没有字节或短文本?
我可以通过将L附加到值来创建一个文字长;为什么我不能以某种类似的方式创建文字短或字节?为什么我需要将 int 文本与强制转换一起使用?
如果答案是“因为C中没有短文字”,那么为什么C中没有短文字?
这实际上并没有以任何有意义的方式影响我的生活。写(短)0而不是0S或其他东西很容易。但是这种不一致让我感到好奇。这是当你深夜起床时困扰你的事情之一。有人在某个时候做出了一个设计决策,以便为某些基元类型输入文本,但不能为所有基元类型输入文本。为什么?
我可以通过将L附加到值来创建一个文字长;为什么我不能以某种类似的方式创建文字短或字节?为什么我需要将 int 文本与强制转换一起使用?
如果答案是“因为C中没有短文字”,那么为什么C中没有短文字?
这实际上并没有以任何有意义的方式影响我的生活。写(短)0而不是0S或其他东西很容易。但是这种不一致让我感到好奇。这是当你深夜起床时困扰你的事情之一。有人在某个时候做出了一个设计决策,以便为某些基元类型输入文本,但不能为所有基元类型输入文本。为什么?
在C中,至少意味着具有CPU的“自然”字大小,并且可能意味着“更大的自然”字大小(在最后一部分中不确定,但它也可以解释为什么并且在x86上具有相同的大小)。int
long
int
long
现在,我的猜测是:对于和,有一个完全适合机器寄存器的自然表示。然而,在大多数CPU上,较小的类型在使用之前必须填充到一个。如果是这样的话,你也可以有一个演员阵容。int
long
byte
short
int
我怀疑这是一种“除非它真正增加价值,否则不要为语言添加任何东西”的情况 - 它被认为增加的价值很小,不值得。正如你所说,这很容易绕过,坦率地说,无论如何它都很少是必要的(只是为了消除歧义)。
在C#中也是如此,我从来没有特别错过任何一种语言。我在Java中错过的是无符号字节类型:)