我可以通过将 L 附加到值来创建文字 long;为什么我不能以类似的方式创建文字短或字节?为什么我需要使用带有强制转换的 int 字面量?
如果答案是“因为 C 中没有短文字”,那么为什么 C 中没有短文字?
这实际上并没有以任何有意义的方式影响我的生活;写(短)0 而不是 0S 之类的东西很容易。但是这种不一致让我很好奇;当你深夜起床时,这是困扰你的事情之一。有人在某个时候做出了设计决定,以使为某些原始类型输入文字成为可能,但并非对所有原始类型都输入文字。为什么?
最佳答案
在 C 中,int
至少意味着具有 CPU 的“自然”字长,而 long
可能意味着是“更大的自然”字长(在最后一部分不确定,但它也可以解释为什么 int
和 long
在 x86 上具有相同的大小)。
现在,我的猜测是:对于 int
和 long
,有一种自然的表示可以完全适合机器的寄存器。然而,在大多数 CPU 上,较小的类型 byte
和 short
在使用之前无论如何都必须填充到 int
中。如果是这种情况,您也可以进行类型转换。
关于java - 为什么 Java 中没有字节或短文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/317816/