菜鸟笔记
提升您的技术认知

C/C++固定位宽类型

int一定是32bit吗?不一定

实际上,C/C++标准规定int的位宽不少于16bit

作为一门古老的语言,C语言历经了各种各样的操作系统,小型的、大型的、内存小的、资源极其有限的,等等。对于同一个数据类型,在不同的操作系统上,其长度是不一定的,见下表。

c/c++标准

LP32系统

(例如32bit win16API)

ILP32系统

(例如32bit unix/linux/mac/win32API)

LLP64系统

(例如win64API)

LP64

(例如64bit unix/linux/mac)

short、unsigned short 至少16bit 16 16 16
int、unsigned int 至少16bit 16 32 32
long、unsigned long 至少32bit 32 32 64
long long、unsigned long long 至少64bit 64 64 64

所以,为了程序的可移植性,建议使用<cstdint>中的固定位宽类型:
int8_t/uint8_t/int16_t/uint16_t/int32_t/uint32_t/int64_t/uint64_t