的未签名对应物是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 [...]与任何其他算术溢出一样,如果结果不适合提供的空间,则行为未定义。[...]
因此,您可能需要为“非常大的值”创建一个特殊类型。