的未签名对应物是ptrdiff_t
什么?同样 - 的签名对应物是size_t
什么?
我想要实现的是拥有一个无符号类型,我可以使用它来存储ptrdiff_t
变量的正值而不必担心大值 - 这似乎是size_t
.
相反 - 我想要一个有符号类型,我可以存储 的值size_t
,同样不用担心大值。
的未签名对应物是ptrdiff_t
什么?同样 - 的签名对应物是size_t
什么?
我想要实现的是拥有一个无符号类型,我可以使用它来存储ptrdiff_t
变量的正值而不必担心大值 - 这似乎是size_t
.
相反 - 我想要一个有符号类型,我可以存储 的值size_t
,同样不用担心大值。
我认为ptrdiff_t
(no uptrdiff_t
) 没有正式的未签名对应物,但使用size_t
它是非常合理的。
在 POSIX 中,签名对应的size_t
是ssize_t
. 它是由函数返回的类型read()
,例如 .
这表明很少有实现的底层类型ssize_t
和ptrdiff_t
不同的实现。
size_t
用于表示对象大小。人们普遍认为编译器编写者不会创建负大小的对象。
请注意,使用 ptrdiff_t` 您会根据比较方式获得差异,因此有符号类型是有意义的(将其更改为无符号类型以获得合理值是微不足道的):
5.7 加法运算符
6 [...]与任何其他算术溢出一样,如果结果不适合提供的空间,则行为未定义。[...]
因此,您可能需要为“非常大的值”创建一个特殊类型。