首先由于数据的长度和平台相关,所以基于 64 位系统比较。
Windows | Linux | |
---|---|---|
unsigned int | 32 bits/4294967295 | 32 bits |
unsigned long | 32 bits | 64 bits/18446744073709551615 |
unsigned long long | 64 bits | 64 bits |
size_t | 32 bits | 64 bits |
基于上面的表再对比下表
综上所述: 32位机器和64位机器比较,对于long和unsigned long类型,所占用的空间是不一样的,从代码可移植性考虑,
定义变量最好明确所需长度,选用合适的变量类型。如果不知道属于多少位的系统,
可以使用下面的命令来查看系统真实long类型的位数:
$ getconf LONG_BIT
(注:这只是常见而已,并不代表所有的32位机器和64位机器均是这样,请先结合对比第一个表,所以选用比较明确的类型,更合理高效)