我已经在大多数系统上阅读了为什么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 at 9223372036854775807)v5:7fffffffffffffff
答案 0 :(得分:2)
根据标准,long long
至少为64位,或者说是8个字节。
在今天的大多数机器上,它长8个字节。 sizeof
(BTW,运算符,而不是函数)返回其大小,您可以依赖它。当sizeof(long long)
的大小为8
时,long long
无法16
。
答案 1 :(得分:1)
大多数系统上最长的标准数据类型是8字节(64位),即long long
。
此外,您可以包含limits.h
哪个库包含每种数据类型的定义值及其在系统上占用的空间。
在我long
遇到某种程度兴趣的事实中稍作更新。
保证长度至少为32位(或4字节)。所以long int
(虽然在这种情况下,long
是一个长度修饰符)。