我可以通过在值后面附加一个 L 来创建一个字面量 long;为什么我不能以类似的方式创建文字短或字节?为什么我需要将 int 文字与强制转换一起使用?
如果答案是“因为 C 中没有短文字”,那么为什么 C 中没有短文字呢?
这实际上并没有以任何有意义的方式影响我的生活;写(短)0 而不是 0S 之类的东西很容易。但这种不一致让我很好奇;这是当你深夜醒来时困扰你的事情之一。有人在某个时候做出了一个设计决定,使得可以输入某些基本类型的文字,但不能输入所有类型的文字。为什么?
In C, int
至少应该具有 CPU 的“自然”字长,并且long
可能意味着“更大的自然”字长(在最后一部分不确定,但它也可以解释为什么int
and long
在 x86 上具有相同的大小)。
现在,我的猜测是:对于int
and long
,有一个完全适合机器寄存器的自然表示。然而,在大多数 CPU 上,较小的类型byte
and short
必须填充到int
无论如何在使用之前。如果是这样的话,你也可以有一个演员。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)