我很困惑size_t
.我在互联网上搜索过并且提到的size_t
是无符号类型,因此它可以表示非负值.
我的第一个问题是,如果它用于表示非负值,为什么我们不使用 unsigned int
而不是size_t
?
我的第二个问题是:是size_t
和unsigned int
可互换的?如果不是那么为什么?
谁能给我一个很好的例子size_t
和简短的工作?
小智 75
如果它用于表示非负值,那么为什么我们不使用
unsigned int
而不是size_t
因为unsigned int
不是唯一的无符号整数类型.size_t
可以是任意的unsigned char
,unsigned short
,unsigned int
,unsigned long
或unsigned long long
,取决于实施.
第二个问题是,
size_t
和unsigned int
可以互换与否,如果没有,为什么?
由于上面解释的原因,它们不可互换^^
.
任何人都可以给我一个关于size_t及其简短工作的好例子吗?
我的"简短工作"并不能说明你的意思.它的工作方式与任何其他无符号类型一样(特别是类似于typedeffed的类型).建议size_t
您在描述对象的大小时使用.特别是,sizeof
运算符和各种标准库函数,如strlen()
返回size_t
.
额外奖励:这是一篇很好的文章(文章已删除,使用返回机器快照)size_t
(以及密切相关的ptrdiff_t
类型).它很好地说明了为什么要使用它.
Kei*_*son 64
C中有5种标准无符号整数类型:
unsigned char
unsigned short
unsigned int
unsigned long
unsigned long long
对其尺寸和范围有各种要求(简而言之,每种类型的范围是下一种类型范围的子集,但其中一些可能具有相同的范围).
size_t
是一个typedef
(即,一个别名)的一些无符号类型,(可能是上述但可能的的一个扩展的无符号整数类型,尽管这是不太可能).它是sizeof
运营商产生的类型.
在一个系统中,unsigned int
用于表示大小可能是有意义的; 另一方面,使用unsigned long
或更有意义unsigned long long
.(size_t
不太可能是unsigned char
或者unsigned short
,但是这是允许的).
目的size_t
是减轻程序员不必担心使用哪种预定义类型来表示大小.
假设sizeof
产生的代码unsigned int
不可移植.假设它产生a的代码size_t
更可能是可移植的.
size_t
有特定的限制.
引自http://www.cplusplus.com/reference/cstring/size_t/:
其中一个基本无符号整数类型的别名.
它是一种能够以字节为单位表示任何对象大小的类型:size_t是sizeof运算符返回的类型,在标准库中广泛用于表示大小和计数.
它不可互换,unsigned int
因为大小int
由数据模型指定.例如,LLP64使用32位int
,ILP64使用64位int
.
归档时间: |
|
查看次数: |
57606 次 |
最近记录: |