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 |
所以,为了程序的可移植性,建议使用
int8_t/uint8_t/int16_t/uint16_t/int32_t/uint32_t/int64_t/uint64_t