unsigned long
❗易错点 1:unsigned long 在不同平台长度不同
long 曾经比int大,因为int很早是2字节,但是在windows上一样
平台 | 编译模型 | unsigned long 大小 |
---|---|---|
Windows 64/32位 | LLP64/LP64 | 4字节(32位) |
Linux/macOS 64位 | LP64 | 8字节(64位) |
现代C++最佳实践
使用#include<cstdint>
,基于C++11标准,跨平台编程,使用下面的类型
类型 | 含义 |
---|---|
int8_t |
8位有符号整数 |
uint8_t |
8位无符号整数 |
int16_t |
16位有符号整数 |
uint16_t |
16位无符号整数 |
int32_t |
32位有符号整数 |
uint32_t |
32位无符号整数 |
int64_t |
64位有符号整数 |
uint64_t |
64位无符号整数 |
size_t
size_t
表示内存中可寻址的最大大小,其大小与平台的指针大小(地址总线宽度)相关。
1 | #include <cstddef> // size_t 定义在这里 |
平台 | 指针大小 | size_t大小 | 最大值 |
---|---|---|---|
32位 | 4字节 | 4字节 | 4GB (2^32 - 1) |
64位 | 8字节 | 8字节 | 16EB (2^64 - 1) |
1 | // 错误示例 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Min的博客!
评论