转载自:https://www.cnblogs.com/Free-Thinker/p/7058773.html
区别
这些是跨平台编程导致的; 一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:
16位平台
数据类型 | 字节 |
---|---|
char | 1个字节8位 |
short | 2个字节16位 |
int | 2个字节16位 |
long | 4个字节32位 |
指针 | 2个字节 |
32位平台
数据类型 | 字节 |
---|---|
char | 1个字节8位 |
short | 2个字节16位 |
int | 4个字节32位 |
long | 4个字节 |
long long | 8个字节 |
指针 | 4个字节 |
64位平台
数据类型 | 字节 |
---|---|
char | 1个字节 |
short | 2个字节 |
int | 4个字节 |
long | 8个字节(区别) |
long long | 8个字节 |
指针 | 8个字节(区别) |
编程注意事项
为了保证平台的通用性,程序中尽量不要使用long数据库型。可以使用固定大小的数据类型宏定义:
typedef signed char int8_t
typedef short int int16_t;
typedef int int32_t;
# if __WORDSIZE == 64
typedef long int int64_t;
# else
__extension__
typedef long long int int64_t;
#endif