发布于 2020-10-07 09:52:57
我的猜测中哪一个是正确的?
不对。int必须是>= 16位。long必须是>= 32位。
不同的编译器(实现)可以使int分配不同数量的位。
对,是这样。
..。默认情况下。
我不知道具有可配置int大小的编译器--它通常直接依赖于目标体系结构--但我认为这是可能的。
另外,不同的编译器可能/不可能使用位填充。
他们可能会。他们没必要这么做。
__int32 (Microsoft)和int32_t是为了解决这个问题而来的,并且:
对,是这样。更具体地说,std::int32_t是基本类型之一的别名,它只有32位,没有填充。如果编译器没有提供这种整数类型,那么也不会提供std::int32_t别名。
微软文档承诺__int32存在,它是int的另一个名称,它有32个非填充位。在其他地方,微软记录称int32_t也是int的别名。因此,除了__int32不是标准名称之外,没有其他区别。
https://stackoverflow.com/questions/64241283
复制相似问题