不同平台的基本类型容量

时间:2017-04-20 12:14:38

标签: c++ types

我知道sizeof(type)将返回不同的值,具体取决于平台和编译器。

但是,我知道每当谈到ints (int32)时,就会说它可能是2 ^ 32个值中的一个。

如果我在int32为8字节的平台上,它的理论最大值为2 ^ 64。它真的可以存储那么多数据,还是总是存储4个字节并使用4个字节进行填充?

问题实际上是,虽然我知道类型的大小会有所不同,但我想知道在各种平台上询问max_int是否会保持不变,还是会根据类型大小给出值。

特别是在处理文件时。如果我将int32写入文件,它是否总是存储4个字节,还是依赖它?

编辑: 考虑到所有的评论以及我尝试创建等效的C#BinaryReader的事实,我认为使用固定大小类型是最佳选择,因为它会将所有这些委托给任何使用它的人(使其更灵活) 。正确?

1 个答案:

答案 0 :(得分:3)

std :: int32_t 的大小始终为32位(通常为4个字节)。

int 的大小可能会有所不同,具体取决于您编译的平台,但至少为16位(通常为2个字节)。

您可以使用C ++检查类型的最大值:

#include <limits>

std::numeric_limits<std::int32_t>::max()
std::numeric_limits<int>::max()