我知道sizeof(type)
将返回不同的值,具体取决于平台和编译器。
但是,我知道每当谈到ints (int32)
时,就会说它可能是2 ^ 32个值中的一个。
如果我在int32
为8字节的平台上,它的理论最大值为2 ^ 64。它真的可以存储那么多数据,还是总是存储4个字节并使用4个字节进行填充?
问题实际上是,虽然我知道类型的大小会有所不同,但我想知道在各种平台上询问max_int是否会保持不变,还是会根据类型大小给出值。
特别是在处理文件时。如果我将int32
写入文件,它是否总是存储4个字节,还是依赖它?
编辑: 考虑到所有的评论以及我尝试创建等效的C#BinaryReader的事实,我认为使用固定大小类型是最佳选择,因为它会将所有这些委托给任何使用它的人(使其更灵活) 。正确?
答案 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()