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