为何Visual Studio 2022中unsigned long的sizeof为4字节而非8字节?
问题原因与解决方案
这是Microsoft Visual Studio遵循Windows平台类型定义规范导致的正常现象:
- Windows x64(64位)平台的类型约定里,
long和unsigned long被固定为4字节(32位),不管编译32位还是64位版本,这个定义都不会改变。这和Linux、macOS等POSIX系统的x86_64平台不同——后者的long是8字节。 - 如果你需要8字节的整数类型,可以使用
long long,sizeof(long long)在VS的32位和64位编译环境下都会返回8,这符合C++标准对long long类型至少64位的要求。 - 要是需要跨平台的固定宽度64位整数,推荐包含
<cstdint>头文件,使用int64_t(有符号)或uint64_t(无符号),这些类型在所有符合C++11及以上标准的编译器中都保证是64位宽度。
内容的提问来源于stack exchange,提问作者lsalamon
相关产品推荐
相关产品推荐

