我知道 sizeof(type)
会返回不同的值,具体取决于平台和编译器。
但是,我知道每当谈论 ints (int32)
时,都说它可以是 2^32 值之一。
如果我在 int32
为 8 字节的平台上,它的理论最大值为 2^64。它真的可以存储那么多数据,还是总是存储 4 个字节并使用 4 个字节进行填充?
真正的问题是,虽然我知道类型的大小会有所不同,但我想知道在各种平台上请求 max_int 是不变的还是会根据类型大小给我值。
尤其是在处理文件时。如果我将 int32
写入文件,它会始终存储 4 个字节,还是取决于它?
编辑: 考虑到所有评论以及我正在尝试创建与 C# BinaryReader 等效的事实,我认为使用固定大小类型是最佳选择,因为它将所有这些委托(delegate)给使用它的人(使其更灵活)。对吧?
最佳答案
std::int32_t 的大小始终为 32 位(通常为 4 字节)。
int 的大小可能会有所不同,具体取决于您编译的平台,但至少为 16 位(通常为 2 个字节)。
您可以在 C++ 中检查您的类型的最大值:
#include <limits>
std::numeric_limits<std::int32_t>::max()
std::numeric_limits<int>::max()
关于c++ - 跨不同平台的基本类型的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43519233/