为不同数据类型分配的内存是否取决于架构?

时间:2010-03-25 03:56:23

标签: c

大家都是为不同类型的变量分配的内存,说浮点数,int和char对于不同的架构是不同的? 提前谢谢。

3 个答案:

答案 0 :(得分:5)

绝对是floatintchar在不同设备上可能具有不同大小的情况,是的。它是由C编译器定义的实现。对于真正可移植的代码,您可以依赖的是:

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

sizeof(char) == 1。 C99中有许多类型具有特定的位大小,如果您需要将类型大小从架构移植到架构,这些类型可能对您有用。

编辑:我查看了规范中的信息。第5.2.4.2.1节“整数类型的大小”是您正在寻找的内容:

  

......实现定义的值的大小(绝对值)应与所示的值相等或更大......

UCHAR_MAX         255 // 2^8 - 1
USHRT_MAX       65535 // 2^16 - 1
UINT_MAX        65535 // 2^16 - 1
ULONG_MAX  4294967295 // 2^32 − 1

等等......

答案 1 :(得分:2)

是的,当然。特别是int特别倾向于:旧的8位和16位架构总是有16位int,而今天的32位和64位架构总是使用32-位int s。这就是int被定义为的方式 - 你正在编译的架构的“自然”整数大小!

答案 2 :(得分:0)

正如其他人所说,这是完全肯定的。然而,还有一个关于字节序的部分,没有人提到过。不同的体系结构也可以存储构成不同顺序类型的字节。