长长是8个字节,含义



我已经阅读了为什么sizeof(long long)在大多数系统上是8的问题,但我仍然不确定如何解释它们的含义。

给出的原因之一是有很多"外面"代码假设sizeof(long long) <= sizeof(size_t)。这就说得通了。然后,对建筑惯例和品牌等有各种各样的看法。我什至不想参与有关《公约历史》的辩论。鉴于long long可以按照标准为任何尺寸,但我认为这并不是我真正关心的原因。

,我认为这并不是。

我想知道的是如何在sizeof(long long)返回8的事实之间解释差异现在,但long long实际上是16。应该将其解释为仅适用于sizeof运算符,或者是否存在与该事实相关的基础地址指针,因此long long上的操作以8个字节增量执行?

sizeof(签名)长v4:8(x,2147483647)V4的值:7fffffff

尺寸长长V5:8(x,9223372036854775807)V5的值:7fffffffffffffffffff

根据标准,long long至少为64位,或说8个字节。

在当今大多数机器上,它长8个字节。sizeof(顺便说一句,运算符,不是功能)返回其大小,您可以指望它。sizeof(long long)不可能是8,而long long的大小为16

最长的标准数据类型是大多数系统上的8个字节(64位),即long long


此外,您可以包括 limits.h哪个库包含每个数据类型的定义值及其在系统上所占用的空间。


在我对long遇到的一定程度的兴趣期间,一个细微的更新。保证它至少长32位(或4个字节)。因此,如long int(尽管在这种情况下,long是一个长度修改器)。

在某个地方有混乱,我不确定它在哪里,因为您不说从哪里获得数字,所以我会尝试澄清基础知识。

sizeof按定义返回类型的字节数量。在所有现代系统上,一个字节均由8位组成,但是在某些深奥或旧体系结构上,字节具有其他数量的位。limits.hCHAR_BIT告诉您字节中有多少位。但是同样,在所有现代体系结构中,是8个。

sizeof(long)返回8,但长长实际上是16。

那是不正确的。如果sizoef(long long)为8,则long long为8个字节。

后续问题是为什么sizeof(long)返回8,但只有4个字节。

再次,不是真的。如果sizeof (long)8,则long保持8个字节。

事实证明,我们是否应该预期消除4 Byte长期。

不是地狱的机会。C和C 的支柱之一是向后兼容。删除基本类型几乎会破坏地球上的每个程序。

如果您询问当intlong long似乎涵盖所有内容时是否使用long类型,则答案是intlong long不涵盖所有内容。有类似的系统arduino其中 sizeof int == 2sizeof long == 4sizeof long long == 8

问题是系统的一部分已切换到64位,并且系统的一部分仍为32位。

相关内容

  • 没有找到相关文章

最新更新