数据类型的大小因操作系统或平台而异?

问题描述:

可能重复:
size of a datatype in c数据类型的大小因操作系统或平台而异?

我要问你是否有任何数据类型的大小并在不同的操作系统或平台变化。?像32位系统一样的32位系统64位系统。
问题更多用于c语言编程。

他们可以是(他们经常这样做)。 C标准要求整数和浮点类型的某些最小范围,但为平台决定实际的类型大小留下了很大的自由度。

参见例如。 limits.hfloat.h

此外,存在需要为真的整数类型的大小之间的关系严格:

sizeof(char) == 1 
sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long) 

平台通常会挑选是天然的硬件尺寸。例如,int s将通常具有本地字大小(例如32位硬件上的32位)。

对于浮点类型,变化较少。大多数平台或多或少都符合IEEE 754

+2

更正:'long'和'long long'可以是相同的大小(如果long是64位)。严格来说,要求是在*范围*的类型,而不是它们的大小;如果int具有更多的填充位而不是long,则足够疯狂的系统可以具有大于long的int。 –

+0

@Keith:我修复了这个错字 - 谢谢!关于疯狂的系统,正如你所说的那样,这是一个好点,但我希望这是一个学术问题,我永远不会看到它(我从来没有)。 –

当然。这在您的32位系统指针中是隐含的,指针是32位,通常是4字节,在64位系统8字节。

+1

@paxdiablo:我想这就是延斯“平常”使用的原因。 –