size_t 无符号性质的基本原理
Bjarne Stroustrup 对使用无符号整数表示正值的警告引发了关于实用性的争论size_t 作为无符号数据类型。
从历史上看,size_t 是在 16 位体系结构上构思的,在该体系结构中将字符串限制为 32 KB 是不合理的。为了解决这个问题,C 标准强制 ptrdiff_t(size_t 的有符号副本)在 17 位内有效运行,这一要求在嵌入式系统中可能仍然具有相关性。
但是,对于现代 32 位和 64 位位平台上,由于 C/C 不幸的隐式转换规则,无符号 size_t 的基本原理变得值得怀疑。当用于数字运算时,无符号类型会成为错误来源,因为负值会被解释为大的正值。
这导致像 Scott Meyers 这样的专家建议避免在接口中使用无符号整数,无论预期如何值范围。只需使用 typedef int MyType 就可以在不影响代码可读性的情况下消除这个问题。
总而言之,unsigned size_t 的选择是在早期架构限制的情况下做出的。虽然它在当时可能是合适的,但在现代编程环境中可以说不太实用,因为隐式转换规则存在很大的错误风险。
以上是Unsigned size_t 在现代 C/C 开发中仍然相关吗?的详细内容。更多信息请关注PHP中文网其他相关文章!