大家都是为不同类型的变量分配的内存,说浮点数,int和char对于不同的架构是不同的? 提前谢谢。
答案 0 :(得分:5)
绝对是float
,int
和char
在不同设备上可能具有不同大小的情况,是的。它是由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)
正如其他人所说,这是完全肯定的。然而,还有一个关于字节序的部分,没有人提到过。不同的体系结构也可以存储构成不同顺序类型的字节。