【size_t, ssize_t, int之间的联系和区别】
32bit-System | 64bit-System | ||
---|---|---|---|
size_t | 无符号数据类型 | 占4字节 | 占8字节 |
ssize_t | 有符号数据类型 | 占4字节 | 占8字节 |
int | 有符号数据类型 | 占4字节 | 占4字节 |
问:为什么有的时候不用int,反而使用size_t?
答:
(1)为增强程序的可移植性,为了方便系统之间的移植而定义;
(2)在当前主流的平台中,int是32位(4字节),而地址线宽度大都是64位,当int大于地址线宽度所需的大小时,会造成资源浪费,当int小于地址线宽度所需的大小时,又会造成范围不够大的问题,size_t的取值range是目标平台下最大可能的数组尺寸,所以需要有个size_t的存在和使用。
- 注:在有符号数和无符号数进行混合计算时,有符号数会先自动转换为无符号数,会导致不知名的错误。
持续更新。。。。。。