什么是ptrdiff_t的未签名对应物

What is the unsigned counterpart of ptrdiff_t?

本文关键字:对应物 ptrdiff 什么      更新时间:2023-10-16

ptrdiff_t的无符号对应物是什么?同样 - size_t的签名对应物是什么?

想要实现的是拥有一个无符号类型,我可以用来存储ptrdiff_t变量的正值,而不必担心大值 - 这似乎很size_t

相反 - 我想要一个可以存储 size_t 的值的有符号类型,再次不必担心大值。

我认为ptrdiff_t没有正式的无符号对应物(没有uptrdiff_t),但是使用它size_t是非常合理的。

在 POSIX 中,size_t 的签名对应项是 ssize_t 。 它是函数返回的类型,例如 read()

这表明很少有ssize_tptrdiff_t的基础类型不同的实现。

size_t用于

表示对象大小。人们普遍认为编译器编写者不会创建负大小的对象。

请注意,使用 ptrdiff_t' 时,您会根据比较方式获得差异,因此有符号类型是有意义的(将其更改为合理值的无符号类型是微不足道的):

5.7 添加剂运算符

6 [...]与任何其他算术溢出一样,如果结果不适合提供的空间,则行为是未定义的。[...]

因此,您可能需要为"非常大的值"创建一个特殊类型。