谨以此作为记录,方便日后查询,错误之处,欢迎指正。
验证环境
Ubuntu 12.04&14.04 32bit&64bit
gcc-4.8
32位和64位系统不同数据类型字字段长度对比
数据类型 | 32bit Linux | 64bit Linux |
---|---|---|
char | 1 | 1 |
int | 4 | 4 |
long | 4 | 8 |
long long | 8 | 8 |
float | 4 | 4 |
double | 8 | 8 |
long double | 12 | 16 |
有一些数据类型在底层开发用的比较多,比如:
int32_t、int64_t、uint32_t、uint64_t
这些类型一看就知道地段长度是多少了,无论在32位还是64位的系统上都不会改变。
其他数据类型:
- size_t:
跟机器字长一样; - off_t:
32位机器下默认是32位长,这时无法对大于4G的文件偏移操作,这时off_t = __off_t;如果想进行大于4G的文件偏移操作,可以在程序中加入头文件之前定义
这时off_t = __off64_t,具体定义在unistd.h中;对于64位机,默认就是64位长。