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