我想知道,那些比本机字更大的类型,以及那些具有编译器抽象支持的类型,比如32位系统上的int64_t,是否对内存中的字节顺序有任何规范?例如,在小端机器上,我们是否应该假设内存布局是一个完整的64位交换顺序?或者它可以像PDP-11一样自由地成为一个中间端?
c.f.http://en.wikipedia.org/wiki/Endianness#Middle-endian
因为__int64 (MS)或long long (gcc)不是C99中int64_t之前的标准,所以假设这些类型的字节顺序不是很牵强吗?
谢谢
发布于 2013-11-01 17:15:20
为什么标准要在内存中指定字节顺序?在所有情况下,这都是由公司/架构自由决定的。如果您对特定的体系结构感兴趣,只需弹出调试器并观察简单程序的行为。
发布于 2013-11-01 15:04:49
C是一种可移植的语言,因此对整数类型的实际表示没有太多的假设。该标准甚至允许填充散布在值位之间的位!有关更多信息,请参阅6.2.6.2整数类型。
发布于 2013-11-01 17:25:19
我不认为C标准对字节顺序有任何规范。它依赖于实现。在实践中,我假设int64_t的字节顺序遵循体系结构的字节顺序。因此,即使在32位程序中,int64_t在内存中的存储也就像64位程序一样。但是由于寄存器是32位的,所以可能需要两个指令来加载/存储数据。
https://stackoverflow.com/questions/19721928
复制相似问题